![](/img/trans.png)
[英]Inline assembly in C with Turbo C 3.0 - how to get address of a label
[英]How to write inline Assembly with Turbo C 2.01?
請參閱第430頁的Turbo C用戶手冊 :
不允許內聯匯編
您的源文件包含內聯匯編語言語句,並且您正在從Integrated Environment中對其進行編譯。 您必須使用TCC命令來編譯此源文件。
我相信您還需要將-B
選項傳遞給TCC(第455頁)。
另外,您可以使用__emit__
(第103頁)將相對簡單的代碼作為機器代碼而不是匯編助記符輸入。
不允許在IDE中進行內聯匯編似乎是一個奇怪的限制。 您可能考慮將其“升級”到Turbo C ++ 3.0,我相信確實允許這樣做。 我可以想象TC ++在提供.c文件時將編譯C代碼,或者可以將IDE設置為顯式編譯C。 也有手冊 。
Turbo C無需使用匯編程序階段即可將C代碼直接轉換為機器代碼,因此不能在程序中包含匯編語言源。 但是,它可以使用__emit
指令插入機器代碼。 最干凈的使用方法可能是使用單獨的匯編器(或DEBUG
)將感興趣的代碼本身處理為COM文件,然后將其中的字節值輸入__emit
指令。 參數從BP + 4(在小型,小型或緊湊型模型中)或BP + 6(中,大型或大型)開始,以從左至右的升序存儲。 局部變量存儲在BP以下的地址。
使用Turbo Pascal時,可以使用方便的程序“內聯匯編器”將匯編語言源轉換為Turbo Pascal文字代碼指令。 Turbo Pascal的指令格式與C的格式不同(我更喜歡Pascal的格式),並且可以用Turbo C不能的方式容納標簽。 盡管如此,使用__emit
可能比嘗試使用內聯匯編代碼對構建時間的影響要小得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.