Допустим, у меня есть функция назма, подобная этой:
inc:
mov rax,[rsp + 8]
add [rax],BYTE 1
ret
И я вызываю эту функцию следующим образом:
push some_var
call inc
Я хочу передать аргумент функции через стек, поэтому я пу sh some_var
, а затем вызываю свою функцию. В функции мой элемент занимает второе место в стеке, поэтому я беру его следующим образом: mov rax,[rsp+8]
Мой вопрос: после вызова функции мне как-то вытолкнуть мой аргумент из стека? Если да, могу ли я как-то удалить его из стека, я имею в виду выскочить, но не зарегистрировать? (Потому что мне больше не нужен этот аргумент.)
ОБНОВЛЕНИЕ: Я обнаружил, что могу просто add rsp,8
, и именно так я могу удалить элемент из стека. Но это хорошая практика? Удалить аргумент из стека после вызова функции?