djgpp gpp 传递变量内联汇编
djgpp gpp pass variable inline assembly
使用带有编译器 gpp 和 intel 语法的 DJGPP
如何将变量传递给内联汇编?
错误如下:
对 `n' 的未定义引用
代码:
void geninterrupt (int n) {
asm("mov al, byte ptr [_n]");
asm("mov byte ptr [genint+1], al");
asm("jmp genint");
asm("genint:");
asm("int 0");
}
djgpp 对扩展 asm 使用 gcc 约束系统。
void geninterrupt (int n) {
__asm__ __volatile__("mov byte ptr [genint+1], al\n\t"
"genint: int 0" : : "a" (n));
}
如果中断发生任何变化,您将需要列出被破坏的寄存器。
使用带有编译器 gpp 和 intel 语法的 DJGPP
如何将变量传递给内联汇编?
错误如下:
对 `n' 的未定义引用
代码:
void geninterrupt (int n) {
asm("mov al, byte ptr [_n]");
asm("mov byte ptr [genint+1], al");
asm("jmp genint");
asm("genint:");
asm("int 0");
}
djgpp 对扩展 asm 使用 gcc 约束系统。
void geninterrupt (int n) {
__asm__ __volatile__("mov byte ptr [genint+1], al\n\t"
"genint: int 0" : : "a" (n));
}
如果中断发生任何变化,您将需要列出被破坏的寄存器。