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对浮点代码的观察结论