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