ARM函数声明宏

时间:2018-11-18 22:42:54

标签: macros

感谢您先阅读

我正在尝试从OPTEE-OS了解一些代码。

这是宏的一部分,似乎试图声明一个函数。

.macro LOCAL_FUNC name colon                
    .section .text.\name                    
    .func \name                             
    .type \name , %function                 
    \name \colon                            
    .endm                                   

此功能位于 .text 部分。

我的问题是以下代码的目的是什么?

\name \colon 

在下面的代码中,

.macro END_FUNC name 
    .size \name , .-\name
    .endfunc
    .endm

为什么应该在其中写入 .size

感谢您之前的回答。

1 个答案:

答案 0 :(得分:1)

\name \colon将创建具有给定名称的标签,因为ARM汇编语言中的标签由字符串和冒号给定。这将允许通过跳转到相同名称的标签来调用LOCAL_FUNC宏扩展后的代码。

\size指令计算符号指向的对象正在使用的空间量,这意味着链接器可以在未使用符号的情况下完全排除该符号。有关\size的更多信息,请参见this blog post