x86-64

    0熱度

    1回答

    已知%rsp指向堆棧幀的頂部,並且指向堆棧幀的基址。然後,我不明白爲什麼RBP%爲0x0在這段代碼: (gdb) x/4xg $rsp 0x7fffffffe170: 0x00000000004000dc 0x0000000000000010 0x7fffffffe180: 0x0000000000000001 0x00007fffffffe487 (gdb) disas HelloWorl

    7熱度

    1回答

    TEST.CPP: #include <iostream> using namespace std; int main() { double pi = 3.14; cout << "pi:"<< pi << endl; } 當與g++ -mno-sse test.cpp編譯上的cygwin 64位,輸出爲: PI:0 但是,如果使用g++ test.cpp編譯,它

    2熱度

    1回答

    如果CPU嘗試執行已使用某些CPU不支持的指令編譯的二進制文件,會發生什麼情況。我特別想知道一些在舊處理器上運行的新AVX指令。 我假設這可以進行測試,友好的消息理論上可以顯示給用戶。據推測,大多數低級別的圖書館都會代您進行檢查。假設你沒有做這個檢查,你會期望發生什麼?您的流程會收到什麼信號?

    2熱度

    1回答

    我知道在C中調用fork()將返回-1如果有錯誤,但我想知道當您在彙編中調用sys_fork時返回值是什麼。 我通常可能會認爲它也返回-1,但我已經處理了sys_brk,並且程序集中的原始系統調用返回了與C Brk()包裝不同的東西。 有誰知道fork錯誤返回值將在彙編中? (我做Linux上的64位NASM組裝)

    0熱度

    1回答

    我正在寫一個子程序,它應該打印rdi中傳遞給它的任何數據的十進制值。它適用於每個可以用32位表示的數字。一旦涉及64位值,事情就會崩潰。 如果我將4294967295或000000000000000000000000000011111111111111111111111111111111b作爲參數傳遞,按預期打印。但如果我做 mov rdi, 4294967295 inc rdi call P

    -2熱度

    1回答

    所以我遇到了這個彙編代碼的一些麻煩,找出兩個數字是答案。我所知道的是輸入應該是由空格隔開的兩位數字,並且基於最後一次比較,最後一位數字應該等於0x6b,即十進制數爲107。 Func4對eax的值做了一些改變,使其成爲107,但我並不確定。那麼,兩個數字將作爲輸入?任何幫助,將不勝感激。 0x000000000040135a <+0>: sub $0x18,%rsp 0x000000000040

    -1熱度

    1回答

    我想通過反彙編程序來了解以下函數的彙編代碼。我無法得到爲什麼所有的操作都與基指針有關。 爲什麼的rcx和rdx寄存器值移動到存儲位置10和18的偏移? (mov 0x10(%rbp),%rax和mov %rdx,0x18(%rbp))。 爲什麼存儲在 mov %rax,-0x8(%rbp) long absdiff(long x, long y) { long result;

    1熱度

    1回答

    我在反彙編器(浮點邏輯C++)中找到了下面的彙編代碼。 842: movss 0x21a(%rip),%xmm0 我明白,當進程rip將總是842和這個0x21a(%RIP)將是常量。使用這個寄存器似乎有點奇怪。 我想知道是否有使用rip相對地址的任何優勢,而不是其他尋址。

    2熱度

    1回答

    我下面的教程是爲x86和採用32位彙編寫,我試圖同時學習64裝配的過程中遵循沿。直到這一課,我已經有了以下簡單的程序,它只是試圖修改字符串中的單個字符;它運行時編譯好但段錯誤。 section .text global _start ; Declare global entry oint for ld _start: jmp short message ; Jump to whe

    4熱度

    1回答

    我剛寫完review for a program that displays the results from QuerySystemAddressMap。 我留下了2個問題: 看到那些 - 對於大多數不必要的大 - 32位參數ECX,EBX,尤其是在EAX功能號,我懷疑有可能存在一個保護模式此BIOS功能對應。我懷疑是否正確? 當the BIOS function 0000E820h在計算機上運