1.本章只演示了部分指令的调试过程,请仿照书中的代码及视频中的调试过程,对其他的指令进行调试与分析。
2.对于下面汇编代码中的每一行,根据操作数,确定适当的指令后缀。
3.当我们调用汇编器的时候,下面代码中的每一行都会产生一个错误消息,请在机器上运行,阅读错误提示信息,并解释每一行是哪里出了错,如何修改。
4.将一个原型为void decode1(int*xp,int*yp,int*zp);的函数编译成汇编代码。代码如下:
参数xp、yp、zp分别存储在相对于寄存器%ebp中的地址偏移8、12、16的地方。
请写出与以上汇编代码的decode1函数等效的C语言代码。
5.假设寄存器%eax的值为x,%ecx的值为y。填写下表,指明下面每条汇编代码指令存储在寄存器%edx中的值。
6.假设下面的值存放在指定的存储器地址和寄存器中:
填写下表,给出下面指令的效果,说明将被更新的寄存器或存储器位置,以及得到的值。
7.我们经常可以看见以下形式的汇编代码行:
但是在产生这段汇编代码的C语言代码块中,并没有出现EXCLUSIVE-OR操作。
(1)解释这条指令实现了什么操作。
(2)更直接表达这个操作的汇编代码是什么?
(3)比较同一个操作的两种不同实现的编码字节长度。