程序的机器级表示
IA32和X86-64(AMD)
32位和64位
ISA
instruction system architecture
重要寄存器
- 程序计数器PC %eip
- 整数寄存器 8个每个32位
有的用来记录状态,有的用来保存临时数据,局部变量,返回值
3.条件码寄存器
字 16位,双字double word, 4字
- 指针都是双字
- char short long 其他4字节
- movb movw movl
32位的寄存器
%al %ah -> %ax -> %eax
%eax %ebx %ecx %edx %edi %esi %esp %ebp
存取数
Imm(Ea,Eb,s) -> M[Imm + R[Ea] + R[Eb] * s]
只有完整的寄存器可以()
只有完整的寄存器可以()
习题
3.1
| 操作数 | 值 |
|---|---|
| %eax | 0x100 |
| 0x104 | 0x104 -> 0xAB |
| $0x108 | 0x108 |
| (%eax) | 0xFF |
| 4(%eax) | 0xAB |
| 9(%eax,%edx) | 0x11 |
| 260(%ecx,%edx) | ->0x13 |
| 0xFC(,%ecx,4) | 0xFF |

本文深入探讨了IA32和X86-64架构下的程序机器级表示,包括ISA、重要寄存器如程序计数器PC,32位寄存器及其使用,以及各种数据类型如字、双字。内容涵盖 mov 操作、算术与逻辑运算,如inc、sub和移位操作,并通过实例解析函数调用时的栈帧操作。此外,还讨论了乘法和除法指令以及位操作,如移位和按位异或。
最低0.47元/天 解锁文章
3550

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



