系统级程序设计 - 机器级编程I:基础
汇编/机器代码
- PC: 程序计数器Program counter
–下一条指令地址
– 被称为“RIP” (x86-64) - 寄存器文件(寄存器堆)
– 大量使用的程序数据 - 条件码(寄存器)
–存储关于最新算术或逻辑操作的状态 信息
–用于条件分支 - 内存
– 字节可寻址数组
– 代码和用户数据
– 支持过程的堆栈(保存过程 调用和返回时的栈
机器指令示例
C代码
把t的值存储到dest指向的对象中
汇编代码
把8-byte值传送到内存中
用x86-64术语,四个字
目标代码
- 3-byte 指令
- 存储位置在地址0x40059e
反汇编器
objdump –d sum - 用于检查目标代码的有用工具
- 分析指令序列的位模式
- 生成汇编代码的近似再现
- 可以以a.out(完整的可执行文件)或.o文件形式运行
数据格式
四种传送指令:
movb 传送字节
movw 传送字
movl 传送双字
movq 传送四字
传送数据
movq Source, Dest:
完整存储器寻址方式
最一般的形式:比例变址寻址
压入和弹出栈数据
地址计算指令
incq Dest Dest = Dest + 1
decq Dest Dest = Dest - 1
negq Dest Dest = - Dest
notq Dest Dest = ~Dest