我有这个代码:
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 似乎无法处理标记的操作数