x86-64与ARM64架构下最常用CPU指令咨询
x86-64 与 ARM64 架构下最常用的 CPU 指令
确实,CPU的指令集中只有极小一部分占据了绝大多数的执行操作量——通常超过90%的指令执行周期都集中在几十种核心指令上,这些指令主要围绕数据移动、算术逻辑运算、内存访问、分支控制这几类核心操作。
x86-64 架构核心常用指令
以下是占据执行量Top级别的指令(按使用频率大致排序):
- 数据移动类:
mov:寄存器与寄存器、寄存器与内存之间的数据传输,是最常用的指令之一,几乎所有程序都会大量依赖它来搬运数据。push/pop:栈操作,用于函数调用时的参数传递、寄存器保存与恢复,在过程调用密集的代码中高频出现。
- 算术逻辑运算类:
add/sub:整数加法与减法,基础运算的核心,广泛用于计数、偏移计算、变量更新等场景。cmp:比较两个操作数,为后续的分支指令提供状态标志,是条件判断的基础。and/or/xor:位运算,除了直接的位操作,还常用于快速清零寄存器(xor rax, rax)、设置特定位等场景。
- 分支与控制类:
jmp:无条件跳转,用于循环、函数跳转等流程控制。jne/je/jl/jg等条件跳转指令:配合cmp使用,实现if/else、循环等条件逻辑,是程序流程分支的核心。call/ret:函数调用与返回,支撑程序的模块化结构,高频出现在任何包含函数调用的代码中。
- 内存访问类:
lea:有效地址计算,不仅用于计算内存地址,还常被编译器用来做高效的算术运算(比如lea rax, [rbx+rcx*2]实现乘法加法组合)。
ARM64 架构核心常用指令
ARM64(AArch64)采用精简指令集(RISC),指令更规整,但同样有一批占据绝大多数执行量的核心指令:
- 数据移动类:
mov:寄存器间数据传输,以及立即数加载到寄存器,是基础的数据搬运指令。ldr/str:内存加载与存储,负责寄存器与内存之间的数据交互,是内存操作的核心。
- 算术逻辑运算类:
add/sub:整数加法与减法,是最基础的运算指令,覆盖大量计数、变量更新场景。cmp:比较操作,设置程序状态寄存器(PSR)的标志位,为条件分支提供依据。and/orr/eor:位与、位或、异或操作,用于位处理、寄存器清零(eor x0, x0, x0)等场景。
- 分支与控制类:
b:无条件跳转,实现循环、函数跳转等流程控制。b.ne/b.eq/b.lt/b.gt等条件跳转指令:配合cmp或其他运算指令设置的标志位,实现条件分支逻辑。bl/ret:带链接的跳转(函数调用)与返回,bl会将返回地址存入lr寄存器,是函数调用的核心指令。
- 其他高频指令:
movz/movk:用于加载大立即数(ARM64的mov只能加载有限范围的立即数,大立即数需要通过这两个指令拼接),在初始化常量、设置地址时高频使用。
这些指令的高频率本质是因为程序的核心逻辑——无论是业务代码还是底层系统代码,都围绕数据搬运、基础运算、流程分支、内存交互展开,复杂的专用指令(比如SIMD、加密指令)只有在特定场景(如多媒体处理、加密解密)才会被大量使用,整体执行占比极低。
内容的提问来源于stack exchange,提问作者Ecir Hana
相关产品推荐
相关产品推荐

