inline-assembly

    4熱度

    3回答

    我想實現上下文切換使用gcc的m68k處理器。我需要使用內聯彙編保存所有寄存器d0,d1 ... d7和a0,... a7。我想知道是否可以在我的內聯gcc中使用一個循環,這將允許我保存這些寄存器,而不是爲每個寄存器寫一行代碼。 例如。 move.l%D0,溫度 pcb.cpuregs.d0 =臨時 我要讓0內部就像一個循環計數器D0。

    46熱度

    4回答

    我記得在與老的Borland DOS編譯器的一天,你可以做這樣的事情: asm { mov ax,ex etc etc... } 現在是否有做到這一點半獨立於平臺的方式?我需要進行BIOS調用,所以如果有一種方法可以在不使用asm代碼的情況下執行此操作,那對我來說同樣有用。

    8熱度

    2回答

    默認情況下,GCC工具鏈使用AT & T彙編程序語法,但通過.intel_syntax指令支持英特爾語法。 此外,無論是在& T和Intel語法處於prefix和noprefix版本,這無論它們是否需要對前面加上%印記註冊名稱不同可用。 根據存在哪些指令,地址常量的格式會發生變化。 讓我們考慮下面的C代碼 *(int *)0xdeadbeef = 0x1234; 使用objdump -d,我們

    3熱度

    3回答

    將程序集代碼嵌入到C/C++程序中時,可以通過使用推送指令(或指定編譯器支持的clobber列表支持它)來避免使用clobbering寄存器。 如果你包含內聯程序集,並且希望避免推送和彈出clobbered寄存器的開銷,有沒有辦法讓gcc爲你選擇寄存器(例如,它知道沒有有用的信息)。

    4熱度

    3回答

    我現在願意用-std=c99來編譯我的項目,而且我正面臨一個我目前不理解的錯誤。這條線: my_type* td = ({ register kmy_type* arg0 asm("eax"); arg0; }); 給我下面的錯誤只在C99: warning: ISO C forbids nested functions error: syntax error before ‘asm’ e