IA-32 汇编:8 位操作对 32 位寄存器的影响
IA-32 assembly: Effect of 8 bit operations on 32 bit registers
在一门计算机科学课程中,有人给了我一个二进制文件,任务是使用逆向工程技术(即反汇编文件并分析它)找出它的作用。
我偶然发现了一行 IA-32 指令:
add %esi,%ecx
我了解到后缀 l
的命令在 32 位寄存器上运行,后缀 w
的命令在 16 位寄存器上运行,我认为(但不知道)没有后缀的运算符对 8 位寄存器进行操作。 编辑:请参阅 Ross Ridge 的评论,它推翻了我的假设。
所以我的问题是:
- 我的上述假设是否正确?
- 如果是这样,上述指令的效果是什么(与
addl
相比)——以及其他操作如 sub
、mov
等有什么效果?
提前致谢!
通常情况下,如果给出了正确的寄存器名称,后缀 ignored/not 很重要。所以上面的指令是32位指令,因为esi和ecx是32位寄存器。
在一门计算机科学课程中,有人给了我一个二进制文件,任务是使用逆向工程技术(即反汇编文件并分析它)找出它的作用。 我偶然发现了一行 IA-32 指令:
add %esi,%ecx
我了解到后缀 l
的命令在 32 位寄存器上运行,后缀 w
的命令在 16 位寄存器上运行,我认为(但不知道)没有后缀的运算符对 8 位寄存器进行操作。 编辑:请参阅 Ross Ridge 的评论,它推翻了我的假设。
所以我的问题是:
- 我的上述假设是否正确?
- 如果是这样,上述指令的效果是什么(与
addl
相比)——以及其他操作如sub
、mov
等有什么效果?
提前致谢!
通常情况下,如果给出了正确的寄存器名称,后缀 ignored/not 很重要。所以上面的指令是32位指令,因为esi和ecx是32位寄存器。