inline-assembly

    1熱度

    3回答

    我有一個asm循環,保證不會超過128次迭代,我希望通過PC相對跳轉來展開。這個想法是以相反的順序展開每個迭代,然後跳轉到需要的循環中。代碼看起來像這樣: #define __mul(i) \ "movq -"#i"(%3,%5,8),%%rax;" \ "mulq "#i"(%4,%6,8);" \ "addq %%rax,%0;" \ "adcq %%r

    4熱度

    2回答

    我一直在瀏覽這裏和互聯網上的問題一段時間了,我似乎無法找出是否有可能在內聯使用GCC以外的東西組裝GCC。我試圖找出是否可以避免使用GAS的AT & T語法(儘管我知道如何在GAS中使用英特爾語法)但擴展的asm格式。雖然這不是一個項目或任何非我自己的好奇心,但我真的很感激我能得到的任何幫助(這實際上是我的第一個問題,因爲我找不到有關它的答案)!另外,如果這有什麼不同,我目前在Windows上使用

    3熱度

    2回答

    如何處理來自內聯彙編程序的函數中的引用?我想這 void foo(int& x) { __asm mov x, 10 } int main() { int x = 0; foo(x); std::cout << x << std::endl; } 但X仍然是0功能執行後,但是 int x = 0; __asm mov x, 10 std:

    6熱度

    4回答

    我目前正在嘗試爲我的圖書館創建高度優化的可重用函數。舉例來說,我寫的函數「是2的冪」的方式如下: template<class IntType> inline bool is_power_of_two(const IntType x) { return (x != 0) && ((x & (x - 1)) == 0); } 這是一種便攜式,低維護的實現爲內嵌C++模板。此代碼是

    1熱度

    1回答

    在我的C代碼中有一些內聯程序集調用PCI BIOS服務。現在問題是其中一個結果返回%ah寄存器,但我找不到引用該寄存器的常量。 我想要的是編寫類似以下內容: asm("lcall *%[call_addr]" : "something here"(status) :); 和可變status包含%ah寄存器的值。 如果我使用"=a"(status)並添加mov %%ah, %%al指令它會工作。

    4熱度

    2回答

    如何使用一個內聯彙編程序命令將寄存器值讀取到變量? 我在舊的freeBSD系統(v2.1 i386)上使用gcc。 我有這樣的代碼: static volatile unsigned long r_eax, r_ebx; asm ("movl %%eax, %0\n" :"=r"(r_eax)); asm ("movl %%ebx, %0\n" :"=r"(r_ebx)); 至於結果,我得

    8熱度

    1回答

    我試圖使用內聯彙編... 我讀了此頁http://www.codeproject.com/KB/cpp/edujini_inline_asm.aspx但我無法理解傳遞給我函數的參數。 我正在寫一個C寫的例子..這是我的函數頭: write2(char *str, int len){ } 這是我的彙編代碼: global write2 write2: push ebp m

    1熱度

    2回答

    我想在我的C程序中寫一個非常簡單的內聯彙編程序,該程序不會執行任何操作,然後將本地寄存器%l0 - %l7設置爲不同的值 。我嘗試了以下直接的方法: asm volatile ( ".text\n\t" "mov 0, %%l0 \n\t" "mov 1, %%l1 \n\t" "mov 2, %%l2 \n\t" "mov 3,

    1熱度

    2回答

    我有一個非常簡單的問題。我想編寫一些直接在單個寄存器上運行的彙編代碼(用於SPARC),稱爲%o1。我想要做的就是用零初始化該寄存器,然後用一些立即值遞增它。問題是,如何從C應用程序輸出%o1中的結果。骨架我有看起來像這樣: void main() { int a; asm volatile ( ".text\n\t" "mov 0, %o1

    0熱度

    2回答

    編譯當前gladman AES library,我得到在aes_modes.c警告,都說"warning C4731: ... frame pointer register 'ebx' modified by inline assembly code" 這聽起來很令人擔憂,我不希望我的應用程序與堆棧損壞崩潰,但我可以勉強讀完x86彙編。任何人都可以建議,如果這些警告可以安全地忽略?