1
在我的C代码中有一些内联程序集调用PCI BIOS服务。现在问题是其中一个结果返回%ah
寄存器,但我找不到引用该寄存器的常量。任何约束来引用gcc内联汇编中的寄存器的高一半?
我想要的是编写类似以下内容:
asm("lcall *%[call_addr]" : "something here"(status) :);
和可变status
包含%ah
寄存器的值。
如果我使用"=a"(status)
并添加mov %%ah, %%al
指令它会工作。但它看起来很丑。
有什么建议吗?
感谢您的帮助。在这篇文章之前,我已经尝试了两种解决方案。对于你的第三个选择,我使用了一个联盟,我认为它会有更好的外观。这些解决方法的一个常见问题是它们需要额外的代码,使封装函数相当长。我认为在找到更好的方法之前,必须保持现有的方法。 – hpsMouse 2011-04-08 11:00:28