网站外链怎么发,织梦网站免费模板,网站备案系统,做阿里网站文章目录 ARM 汇编宏介绍ARM 汇编宏的使用 下篇文章#xff1a;ARM64 常见汇编指令学习 12 – ARM 汇编函数 的学习 上篇文章#xff1a;ARM64 常见汇编指令学习 10 – 无符号位域提取指令 BFXIL
ARM 汇编宏介绍
在 ARM 汇编中#xff0c;“.macro” 是用来定义一个宏的指… 文章目录 ARM 汇编宏介绍ARM 汇编宏的使用 下篇文章ARM64 常见汇编指令学习 12 – ARM 汇编函数 的学习 上篇文章ARM64 常见汇编指令学习 10 – 无符号位域提取指令 BFXIL
ARM 汇编宏介绍
在 ARM 汇编中“.macro” 是用来定义一个宏的指令。宏可以看作是一个可以在汇编程序中重用的代码段。当调用宏时汇编器会将宏的内容插入到调用位置。
一个简单的使用示例是
.macro add_and_mov, dst, src1, src2 add \dst, \src1, \src2 mov \dst, \src1
.endm在这个例子中我们定义了一个名为’add_and_mov’的宏它接受三个参数dst、src1和src2。宏的主体部分包含两条指令‘add’和mov’。使用的时候只需要在程序中调用这个宏传递相应的参数就可以了。例如
add_and_mov x0, x1, x2这将在汇编代码中插入add x0, x1, x2和mov x0, x1两条指令。
需要注意的是“\dst”、“\src1和”\src2 是参数的引用它们在宏被实例化即在代码中被调用时会被替换为实际的操作数。同时宏定义的结束需要用.endm来标记。
ARM 汇编宏的使用
在代码调试的初期由于没有串口只能通过POST_CODE的方式进行调试也即通过汇编向 memory 中写入数据下面代码展示了如何使用 宏 POST_CODE 进行调试。
.macro POST_CODE, valmov x23, x0mov x0, #\valbl ASM_PFX(PostCode_S)mov x0, x23
.endm//x0 postcode value
ASM_FUNC (PostCode_S)mov x24, x1mov x1, #0x87000000str x0,[x1]mov x1, x24retASM_FUNC(_ModuleEntryPoint)POST_CODE 0xE001上面代码表示在调用 _ModuleEntryPoint 函数时候会向地址 0x87000000 写入 0xE001d。其中 bl ASM_PFX(PostCode_S) 表示调用汇编函数 PostCode_S, 并且传给 函数 PostCode_S的参数是 x0的值(0xE001)。
关于 ASM_FUNC 的介绍见下篇文章
下篇文章ARM64 常见汇编指令学习 12 – ARM 汇编函数 的学习 上篇文章ARM64 常见汇编指令学习 10 – 无符号位域提取指令 BFXIL