私はこのコードを持っています:
void geninterrupt (int x) {
__asm__(
"movb x, %al \n"
"movb %al, genint+1 \n"
"jmp genint \n"
"genint: \n"
"int $0 \n"
);
}
movb
の引数を使用するにはどうすればよいgeninterrupt()
ですか?
私はこのコードを持っています:
void geninterrupt (int x) {
__asm__(
"movb x, %al \n"
"movb %al, genint+1 \n"
"jmp genint \n"
"genint: \n"
"int $0 \n"
);
}
movb
の引数を使用するにはどうすればよいgeninterrupt()
ですか?
制約フィールドを正しく使用する必要があります。
void geninterrupt (int x) {
__asm__(" movb %[x], %%al \n"
" movb %%al, genint+1 \n"
" jmp genint \n"
"genint: \n"
" int $0 \n"
: /* no outputs */
: [x] "m" (x) /* use x as input */
: "al" /* clobbers %al */
);
}
ここには、GCC インライン アセンブリに関する適切なハウツーと、関連する GCC ドキュメントへのリンクがあります。
編集:GCCはラベル付きオペランドを処理できないようです