微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将寄存器设置为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 举报,一经查实,本站将立刻删除。