汇编语言中的整数运算
1. 加法运算结果处理
在加法运算后,64 位结果会存于 ECX:EDX 寄存器对中。若要在 printf 函数里使用这些结果,需先将它们压入栈,且要先压入含高阶字节的寄存器(ECX)。C 语言的 printf 函数会把 ECX 和 EDX 组合当作一个 64 位值读取。
组装并链接文件后,可直接显示输出,也能运行调试器查看过程中的各步骤。比如,在寄存器加载操作数后、加法运算前,寄存器状态如下:
(gdb) info reg
eax 0x1 1
ecx 0x1 1
edx 0x55acb400 1437381632
ebx 0xb041869f -1337882977
64 位整数的十六进制值按计划加载到了寄存器。调试器假定寄存器值为有符号整数,所以第三列的值可能无意义。加法指令执行后,再查看寄存器:
(gdb) info reg
eax 0x1 1
ecx 0x3 3
edx 0x5ee3a9f 99498655
ebx 0xb041869f -1337882977
ECX:EDX 寄存器对包含结果信息,结果还会通过 printf 函数以十进制形式显示:
超级会员免费看
订阅专栏 解锁全文
1367

被折叠的 条评论
为什么被折叠?



