1
NASMでマクロを使用して、いくつかの繰り返し機能を定義しています。私は、次のコードを使用します。NASMマクロで 'wait'というラベルを使用するとエラーが発生する
; System call numbers
%define SYS_fork 1
%define SYS_exit 2
%define SYS_wait 3
; define the macro
%macro SYSCALL 1
global %1
%1:
mov eax, SYS_%1
int 64 ; 64 is system call
ret
%endmacro
; call the macro to setup the functions
SYSCALL fork
SYSCALL exit
SYSCALL wait
これは名前wait
でマクロを作成するための最後の呼び出しを除いて、正常に動作します。それは私にエラーを与える:
error: parser: instruction expected
wait
はnasmの予約語ですか?もしそうなら、まだwait
という関数を定義する方法はありますか?
両方の質問に該当します。 [NASMマニュアル](http://www.nasm.us/doc/nasmdoc3.html)には、_An識別子の前に$が付いていて、予約語ではなく識別子として読み取られることを示していることが示されています。だからあなたのマクロで '%1:'を '$%1:'に変更してください。 –
@MichaelPetch Thxは、私が探していたものでした。 – ErwinM