У меня много проблем с работой этого крошечного макроса.
.macro int_kernel subl $4, %esp int $0x80 addl $4, %esp .endm
Запустив ассемблер, я получаю
as -arch i386 upper.s -o ./upper.o upper.s:51:expecting operand before ','; got nothing upper.s:51:suffix or operands invalid for `int' upper.s:51:expecting operand before ','; got nothing
Ошибки возникают из-за синтаксиса макроса OSX, где $0,$1,... используются для ссылки на параметры макроса.
Каков правильный синтаксис OSX для констант в этом макросе?
Решение: необходимо использовать два знака доллара, как в subl $$4, %esp
.