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