将寄存器设置为1的首选方法

问题描述

看起来the suggested way to set a register to 0是:

xor %eax,%eax    # like mov $0,%eax  but sets FLAGS

将寄存器设置为1的相应首选方法是什么?我想到的一些是:

mov $1,%eax
or  $1,%eax        # as discussed in comments,doesn't work for most EAX inputs

另外,在gdb或其他地方是否有办法快速查看带有所有操作数的指令的字节大小?除非我的计算错误(并且我很不擅长以十六进制计数),否则它的大小如下所示(来自gdb):

>>> x/7i $rip
=> 0x400078 <_start>:       xor    %eax,%eax  # 2 bytes
   0x40007a <_start+2>:     xor    %rax,%rax  # 3 bytes
   0x40007d <_start+5>:     or     $0x1,%rax  # 4 bytes
   0x400081 <_start+9>:     or     $0x1,%eax  # 3 bytes
   0x400084 <_start+12>:    mov    $0x1,%eax  # 5 bytes
   0x400089 <_start+17>:    mov    $0x1,%rax  # 7 bytes
   0x400090 <_start+24>:

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...