go汇编

2024-05-23  本文已影响0人  呦丶耍脾气

运行输出汇编指令

go tool compile -S -N -l main.go

常用指令

指令 解释
MOVQ: 将数据从源操作数移动到目标操作数。
ADDQ、SUBQ、MULQ、DIVQ: 对整数进行加、减、乘、除运算。
ANDQ、ORQ、XORQ: 对整数进行按位与、或、异或运算。
XORPS 对两个浮点寄存器中的值执行异或操作
CMPQ: 比较两个整数。
JMP: 无条件跳转。
Jcc: 根据条件跳转,例如 JZ(等于零时跳转)、JNZ(不等于零时跳转)。
JLS(jump if less than or equal to) 比较两个操作数的大小,并根据比较结果进行跳转
LEAQ: 将有效地址加载到寄存器。
MOVSB、MOVSL、MOVSD: 将字节、字或双字从源操作数移动到目标操作数。
FUNCDATA 将函数数据加载到内存中
TESTB 测试一个字节的值,将一个字节的值与0xFF(255)进行按位与运算,然后将结果存储回原来的寄存器
HALT: 停止程序执行。
NOP: 空操作。
SWI: 软件中断。
TRAP: 陷阱指令。

关键字

关键字 解释
AX 寄存器,用于临时存储数据、计算结果或作为函数调用的返回值
AL 处理器的寄存器,存储操作数的低 8 位
BP 基指针寄存器(Base Pointer Register),BP寄存器被用来保存当前函数的栈帧的起始位置
CX 寄存器,通常用于在循环和分支指令中计数
SP 指栈指针(Stack Pointer)
TEXT: 定义程序入口点(运行时的函数)。
DATA: 定义全局数据。
GLOBL: 使符号在链接程序中全局可见。
SIZE: 为符号或函数指定大小。
LOCAL: 定义函数内部局部变量。
TLS(Thread-Local Storage) 用于存储线程局部变量
PCDATA(Procedure Call Data) 指一个数据类型,指示函数调用中传递的参数数据,通常用于指示这些参数在内存中的位置和大小
ABIInternal 描述Go运行时的内部实现和ABI的接口

寄存器

上一篇 下一篇

猜你喜欢

热点阅读