go汇编
作者:
呦丶耍脾气 | 来源:发表于
2024-05-23 11:47 被阅读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的接口 |
寄存器
- PC 寄存器(程序计数器):
作用: 用于存储将要执行的下一条指令的地址。
功能: PC 寄存器的值在程序执行过程中持续增加,指向下一条即将被执行的指令的地址。当发生分支、跳转或函数调用时,PC 寄存器的值会相应地更新。这是控制流程的关键寄存器。
- SP 寄存器(栈指针寄存器):
作用: 用于存储栈的顶部地址。
功能: SP 寄存器的值指示了当前栈帧的顶部,即栈中最新的数据所在的位置。当进行函数调用时,一个新的栈帧被压入栈中,SP 寄存器的值会相应地减小;当函数返回时,栈帧被弹出,SP 寄存器的值会相应地增加。
本文标题:go汇编
本文链接:https://www.haomeiwen.com/subject/yxrkbdtx.html
网友评论