inline-assembly

    5熱度

    1回答

    我正在修改舍入模式(+ inf,-inf,最接近或截斷)的Rust箱子。 是改變舍入模式的功能是使用內聯彙編語言編寫: fn upward() { let cw: u32 = 0; unsafe { asm!("stmxcsr $0; mov $0, %eax; or $$0x4000, %eax; mov %eax, $0;

    4熱度

    1回答

    我想在parasoft C++測試軟件中編譯和測試示例嵌入式彙編代碼。 源代碼: #include <stdio.h> void example() { int arg1, arg2, add, sub, mul, quo, rem ; printf("Enter two integer numbers : "); scanf("%d%d", &arg1, &arg2); __asm

    0熱度

    1回答

    下面的代碼只是試圖將數據從'in *'數組複製到'out *'數組,但在第一個vst1.32指令中出現段錯誤,但是爲什麼? int* in0 = new int[4]{ 0x0, 0x1, 0x2, 0x3 }; int* in1 = new int[4]{ 0x4, 0x5, 0x6, 0x7 }; int* in2 = new int[4]{ 0x8, 0x9, 0xA, 0xB };

    0熱度

    1回答

    我知道,在使用GCC使用內聯彙編器時,可以使用關鍵字volatile修飾彙編部分,以防止優化器移動。 在Microsoft C++中是否存在類似的事情,或者默認情況下優化器是否僅保留內聯代碼?

    0熱度

    1回答

    該標題可能看起來令人困惑,但是,如何在不修改內存的情況下修改子程序? 我想要做的事情基本上是NOP子程序(有效使它無用),而無需修改內存或產生相當於此的東西......這可能嗎?

    0熱度

    1回答

    隨着內聯彙編在GCC,您可以用"i"約束指定立即彙編操作數,像這樣: void set_to_five(int* p) { asm ( "movl %1, (%0);" :: "r" (p) , "i" (5) ); } int main() { int i; set_to_five(&i);

    0熱度

    1回答

    我最近進入了gcc的內聯彙編,並具有基本的彙編知識,我理解如何使系統調用相當好,直到我試圖用一個或多個參數執行一個簡單的sys_execve。 如果我沒有傳遞任何附加參數,系統調用execve可以正常工作,並且在嘗試傳遞任何參數時僅運行不帶參數的可執行文件。 #include <stdio.h> char *argv[]={"/bin/echo","parameter test", NULL}

    0熱度

    1回答

    我有一個程序來接受用戶輸入(與用戶想要輸入的一樣多),並計算程序集中的平均值。即使通過使用xor和mov eax清零寄存器,0;我無法讓這個號碼出來。感謝您提前提供任何幫助! 樣品I/O: 70 88 90 77 -1 我得到的答案永遠是一個非常高的數字 #include <iostream> using namespace std; int score = 0, avg = 0,

    -3熱度

    1回答

    我們先從一個32位代碼如:「AA BB CC DD」(小端) 我們要「AA DD CC BB」作爲最終結果(大端)。 我已經設法將它寫入8行,其中%ebx作爲條目,%ecx作爲出口。老師提到可以用不到4行的方式寫這個,3是記錄。我很好奇看看它如何縮短。 mov %R1, %ebx mov %bx, %cx shl $16, %ecx mov %cl, %dl mov %bl, %cl m

    1熱度

    2回答

    我只是想知道是否可以內聯編寫外部.asm文件中的彙編函數。我的應用程序是64位模式,因此無法使用內聯彙編器(我正在使用Visual Studio C++)。 在此先感謝