3.3数据格式

3.4访问信息
x86-64包含的一组共16个存储64位值的通用目的寄存器


3.4.1操作数指示符

3.4.2数据传送指令

![]()

3.4.4压入和弹出数据栈

3.5算数和逻辑操作


3.5.1加载有效地址


3.5.2一元和二元操作


3.5.3移位操作

3.5.5特殊的算数操作


3.6控制
3.6.1条件码
CF:carry-over,ZF:zero,SF:symbol,OF:over-flow


3.6.2访问条件码
e:equal,n:not,s:symbol,g:great:l:less,a:above,b:below


3.6.3跳转指令



3.6.5用条件控制来实现条件分支

3.6.6用条件传送来实现条件分支




3.6.7循环
1.do-while循环

2.while循环


3.for循环


3.6.8switch语句

3.7过程

3.7.1运行时栈

3.7.2控制转移

3.7.3数据传送


参数7位于栈顶(重要)
3.7.4栈上的局部存储

3.7.5寄存器中的局部存储空间

3.7.6递归过程

3.8数组分配和访问
3.8.1基本原则



3.8.2指针运算

3.8.3嵌套的数组



3.8.4定长数组

3.8.5变长数组



3.9异质的数据结构
3.9.1结构

3.9.2联合




3.9.3数据对齐




3.10在机器级程序中将控制与数据结合起来
3.10.1理解指针







3.10.2应用:使用GDB调试器


3.10.3内存越界引用和缓冲区溢出




3.10.4对抗缓冲区溢出攻击






3.10.5支持变长栈帧


3.11浮点代码


AVX512和AVX2相比
1、寄存器变化(与AVX2相比,不仅寄存器的宽度从256位增加到512位,而且寄存器的数量也增加了一倍,达到32)
2、比AVX2提供高达8倍的性能提升,由于并行处理了16条消息
3.11.1浮点传送和转换操作



3.11.2过程中的浮点代码



3.11.3浮点运算操作

3.11.4定义和使用浮点数

3.11.5在浮点代码中使用位级操作

3.11.6浮点比较操作





3.11.7对浮点代码的观察结论

