Функция ARM, объявляющая макрос - PullRequest
0 голосов
/ 19 ноября 2018

Спасибо, что прочитали первым.

Я пытаюсь понять некоторый код из 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 голосов
/ 19 ноября 2018

\name \colon создаст метку с заданным именем, потому что метки на языке ассемблера ARM задаются строкой, за которой следует двоеточие. Это позволит вызывать код, следующий за расширением макроса LOCAL_FUNC, путем перехода к метке с тем же именем.

Директива \size вычисляет объем пространства, используемого объектом, на который указывает символ, что означает, что компоновщик может затем полностью исключить этот символ, если он не используется. См. этот блог , чтобы узнать больше о \size.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...