这节课老师说不会让我们坐下来写汇编代码(那真的有点痛苦),而是我们会阅读大量代码,这些代码由GCC编译产生!
History of Intel processors and architectures 英特尔处理器架构的历史
这一部分老师讲的有点琐碎,blog中就不写了!
Assembly Basics: Registers, operands, move 汇编基础
Assembly Characteristics: Data Types 汇编语言特性
- "Integer" data type of 1,2,4,or 8 bytes,不区分unsigned和signed
- floating point 有4,8,10,bytes
- 没有数组以及一些数据结构,只是内存中连续存储的单元
x86-64 Integer Registers
注意到 %r代表62位操作 %e代表了32位的操作,%e版本只是%r实体的低32位。
移动数据
移动数据格式
moveq Source,Dest:
操作数类型
操作数组合
理解Swap()函数
使用x86-64的时候,函数参数总是出现在某些特定的寄存器中,今天要记住的是%rdi将是第一个参数寄存器,%rsi将是第二个参数寄存器
完整的内存地址模式
下面是内存完整模式的一个例子
地址计算