机器指令
处理器
程序计数器(PC, Program counter)
存着下一条指令的地址,在 x86-64 中称为 RIP
寄存器(Register)
用来存储数据以便操作
常用的寄存器
前六个寄存器(%rax, %rbx, %rcx, %rdx, %rsi, %rdi)称为通用寄存器
%rax(%eax) 用于做累加
%rcx(%ecx) 用于计数
%rdx(%edx) 用于保存数据
%rbx(%ebx) 用于做内存查找的基础地址
%rsi(%esi) 用于保存源索引值
%rdi(%edi) 用于保存目标索引值
条件代码(Codition codes)
通常保存最近的算术或逻辑操作的信息,用来做条件跳转
程序优化
用好编译器的不同参数设定
写对编译器友好的代码,尤其是过程调用和内存引用,时刻注意内层循环
根据机器来优化代码,包括利用指令级并行、避免不可以预测的分支以及有效利用缓存
优化技巧
代码移动
循环体里面不应该包含哪些只有一个结果的表达式
减少计算强度
个人感觉对于现代处理器来说,那个什么把乘法转成加法或者是移位什么的操作,通通都是多余的了,现在处理器速度这么快,这样也并不能改变什么性能了