2013-05-01 3 views
1

Есть ли способ создать следующий верхний и нижний колонтитулы для подпрограмм в nasm без необходимости явно их кодировать каждый раз, когда я определяю новую процедуру?Код запуска и выхода Nasm для подпрограмм

Заголовок:

push ebp 
    mov ebp, esp ; Entry code - set up ebp and esp 

тело рутинного

сноске:

mov esp, ebp ; Function exit code 
    pop ebp 
    ret 

Я ищу что-то вроде:

some command that generates entry code 
body of the routine 
some command that generates exit code 

ответ

2

Вы можете определить мульти -строчный макрос ...

%macro prologue 1 

     push ebp 
     mov  ebp,esp 
     sub  esp,%1 

%endmacro 

Source.

Вы можете определить один для входа и выхода функции.

%macro prologue 1 

     push ebp 
     mov  ebp,esp 
     sub  esp,%1 

%endmacro 

%macro epilogue 1 

     mov  esp,ebp 
     pop  ebp 
     ret 

%endmacro 

Допустимый аргумент - сколько места вы хотели бы зарезервировать в стеке.

+0

@AntoineMathys Не знал о них. Спасибо, что добавил. – alex