inline-assembly

    0熱度

    2回答

    我想調用在asm文件中定義一個函數並從Cpp文件/函數中調用此函數。另外我必須在64位平臺上編譯這個項目。 請幫助我這麼做,因爲我對彙編代碼沒有多少了解。任何幫助將不勝感激。 感謝

    0熱度

    2回答

    我想用Visual Studio中的內聯彙編在C中編寫程序。我正在讀取一個字符串,並且需要將變量中的小寫字符數和變量中的大寫字符數存儲起來。這是我到目前爲止: void FnlUpperLowerCount(char *inStr) { int UpCount = -99; int LowCount = -99; _asm { mov esi, i

    1熱度

    1回答

    我有這樣的指令: asm("message: .byte 'Hello, World!', 0x0A"); 出於某種原因,編譯器說:junk at end of line, first recognized character is 'e'。根據網絡上的其他示例,我試圖用db替換.byte。然後輸出是no such instruction: 'db 72ello, World!440x0A'(

    2熱度

    1回答

    我嘗試從.text節中定義字符串。它編譯沒有錯誤,但當我用gdb反彙編時,我得到了糟糕的指令。 這裏,它的代碼在C: void main(){ __asm__( "jmp .+0x35;" "pop %rsi;" "mov %rsi, -0x10(%rsi);" "movq $0x0,-0x8(%rsi);" "mov

    1熱度

    1回答

    你好,我有一個關於lea指令和數組的問題,這工作得很好: char *msg = new char[6]; msg = "hello"; _asm{ push 10h push 0 mov eax, [msg] push eax push 0 call MessageBox } } 可是爲什麼我在這裏得到

    0熱度

    1回答

    我正嘗試從默認的& t語法中使用gcc內聯程序集從堆棧中讀取值。 我的代碼是 unsigned int ret_val; __asm volatile( "movq %%rbp %0;\n" :"=r"(ret_val) ); 我得到一個錯誤: Assembler messages: Error: junk `%eax' after register

    5熱度

    1回答

    這裏是用在它擴展彙編代碼C函數: static inline uint xchg(volatile uint *addr, uint newval) { uint result; asm volatile("lock; xchgl %0, %1" : "+m" (*addr), "=a" (result) : "1" (newval) :

    2熱度

    1回答

    我想在我的C代碼中使用英特爾的PCLMULQDQ指令和內聯彙編,用於乘以GF(2^n)中元素的兩個多項式。編譯器是GCC 4.8.1。 多項式存儲在uint32_t(6個字段大)的數組中。 我已經檢查過網頁如何正確使用PCLMULQDQ指令或CLMUL指令集,但沒有找到任何好的文檔。 我真的很感激一個簡單的例子,在C和asm中如何將兩個簡單多項式與指令相乘。有人知道該怎麼做嗎? 此外,是否有任何先

    2熱度

    2回答

    我需要在c中優化混合代碼以獲得更快的響應時間,所以我決定使用內聯彙編將兩個緩衝區混合到一個新的更大的緩衝區中。基本上我有左右聲道分開,我想把它們放在一起放入緩衝區。所以我需要從左聲道輸入2個字節,然後從右聲道輸入兩個字節,依此類推。 爲此,我決定將我的3個指針發送給我的彙編代碼,我打算將左指針指向的R0寄存器和右指針指向的存儲器複製到R1中,之後我打算將R0和R1混合到R3和R4中稍後將這些寄存器

    0熱度

    2回答

    出於測試目的,我正在爲icls內聯彙編程序編寫用於英特爾至強融核的短彙編代碼片段。現在我想使用屏蔽矢量指令,但是我無法將它們饋送到內聯彙編程序。 對於這樣的代碼: vmovapd -64(%%r14, %%r10), %%zmm0{%%k1} 我得到錯誤信息 /tmp/icpc5115IWas_.s: Assembler messages: /tmp/icpc5115IWas_.s:563: