Я создаю функцию со следующей подписью:Произвольное количество параметров в Assembler (x86, ATT)
int function_test (char *something, ...);
Давайте предположим, что на * что-то есть что-то, что позволит мне знать, сколько параметров было (так же, как printf делает с «%»).
Так что я сохранить текущий номер параметра в %ebx
как кратное 4, начиная с 8, так что я могу получить 8(%ebp)
, 12(%ebp)
и т.д.
Как мне сделать, чтобы получить содержимое этого параметра? Когда я пытаюсь:
movl %ebx(%ebp),variable
Я получаю сообщение об ошибке (junk %ebp after register
).
Как я могу получить содержимое этого параметра? И каков будет синтаксис для увеличения его значения?
Вы должны использовать «режимы адресации x86» и, в частности, синтаксис AT & T. Я думаю, вы можете что-то сделать с помощью '(% ebx,% ebp)', но, вероятно, не напрямую к 'переменной' (должен быть другой регистр). – lurker