在第3章中,我们将看到由反汇编器生成的列表,反汇编器是一种将可 执行程序文件转换回可读性更好的ASCII码形式的程序。这些文件包含许多十六进制 数字,都是用典型的补码形式来表示这些值。能够认识这些数字并理解它们的意义 (例如它们是正数还是负数),是一项重要的技巧。
在下面的列表中,对于标号为A〜I(标记在右边)的那些行,将指令名(sub、mov 和add)右边显示的(32位补码形式表示的)十六进制值转换为等价的十进制值。
4004d0: 48 81 ec e0 02 00 00 sub $0x2e0,%rsp A.
4004d7: 48 8b 44 24 a8 mov -0x58(%rsp),%rax B.
4004dc: 48 03 47 28 add 0x28(%rdi),%rax C.
4004e0: 48 89 44 24 d0 mov %rax,-ox30(%rsp) D.
4004e5: 48 8b 44 24 78 mov 0x78(%rsp),%rax E.
4004ea: 48 89 87 88 00 00 00 mov %rax ,0x88(%rdi) F.
4004f1: 48 8b 84 24 f8 01 00 mov 0x1f8 (%rsp),%rax G.
4004f8: 00
4004f9: 48 03 44 24 08 add 0x8 (%rsp),%rax
4004fe: 48 89 84 24 c0 00 00 mov %rax,0xco (%rsp) H.
400505: 00
400506: 48 8b 44 d4 b8 mov -0x48(%rsp,%rdx,8),%rax I.