汇编宏伪指令介绍

1、汇编宏伪指令介绍

c 复制代码
.macro macname macargs 
···
.endm

(1)".macro "和".endm "表示宏定义的开始和结束;

(2) ".macro"后面接着宏定义的名字,然后是参数,参数后面的宏定义的实现;

(3)在宏定义中使用参数,需要添加前缀"";

2、汇编宏举例分析

c 复制代码
//实现两个数相加并把结果保存到a1寄存器的宏
.macro add_data p1=0 p2:req
mv a5, \p1
mv a6, \p2
add a1, a5, a6
.endm
关键字 含义
p1=0 第一个参数用"=0"修饰,表示该参数在使用宏时可以省略,如果省略则默认值是0
p2:req 第二个参数用":req"修饰,表示 在调用宏时必须传递一个值,不能省略,否则编译会报错

3、宏的特殊字符

c 复制代码
//在宏定义中想把两个参数作为字符拼接到一起
.macro opcode base length
\base\().\length
.endm

opcode store.l
//等同于下面
store.l

需要用"\()"来告诉汇编器参数什么时候结束,不能直接写成"\base.\length";

相关推荐
无小道12 小时前
c++--typedef和#define的用法及区别
c语言·开发语言·汇编·c++
代码改变世界ctw2 天前
ARM汇编编程(AArch64架构)课程 - 第5章函数调用规范
汇编·arm开发·架构
liulilittle2 天前
C/C++ inline-hook(x86)高级函数内联钩子
c语言·开发语言·汇编·c++·hook·底层·钩子
代码改变世界ctw2 天前
ARM汇编编程(AArch64架构)课程 - 第8章:控制流与循环
汇编·arm开发
Jacen.L3 天前
【汇编逆向系列】九、函数传参之结构体 - SHL、SHR指令,小型结构体参数和返回值
汇编
2401_861615284 天前
跨平台的ARM 和 x86 Docker 镜像:汇编语言实验环境搭建
linux·汇编·ubuntu·docker·容器
大P哥阿豪4 天前
Go defer(二):从汇编的角度理解延迟调用的实现
开发语言·汇编·后端·golang
花小璇学linux4 天前
imx6ull-裸机学习实验1——汇编LED灯实验
linux·汇编·imx6ull·arm裸机开发
无小道4 天前
c++-引用(包括完美转发,移动构造,万能引用)
c语言·开发语言·汇编·c++
liulilittle5 天前
C++ i386/AMD64平台汇编指令对齐长度获取实现
c语言·开发语言·汇编·c++