cpu-registers

    6熱度

    1回答

    爲什麼我們push ebp作爲Assembly函數的被調用者中的第一個動作? 據我所知,我們用mov edi, [ebp+8]來得到傳入的變量,但我們的esp已經指向了調用函數的返回地址。我們可以通過mov edi, [esp+4]或者如果我們推動了被調用的寄存器,然後mov edi, [esp+16],輕鬆地訪問傳入的變量。 那麼,爲什麼你需要在函數中管理那些額外的寄存器在cpu中(ebp)?即

    2熱度

    1回答

    我想獲得一些幫助這個表達式轉換成4種方法的命令: z=3*(x+2)-2*y 這裏是我的嘗試的方法: 通過堆棧: push 2 push -1 mult push y mult push x push 2 add push 3 mult add pop z 由累加器: load y mult -2 store temp load x add 2 mult 3

    1熱度

    1回答

    爲什麼它很重要,在保存的寄存器中的數據究竟會發生什麼;它是否被刪除或用新值覆蓋?這些新的價值從何而來?如果我不清楚任何事情,請在下面評論。

    2熱度

    1回答

    你好,我是這個網站的新手,如果我的問題有任何問題,我 提前道歉。我在這裏看到過類似的問題,但它並不是專門回答我的問題。 我正在參加英特爾微處理器課程,並閱讀有關微處理器和寄存器,我對微處理器之間的寄存器差異感到困惑。例如,我知道x86有8個通用寄存器,x386DX除寄存器數外,總共有16個寄存器,這是兩個微處理器寄存器之間的主要區別?

    1熱度

    1回答

    這裏是一個C源代碼示例: register int a asm("r8"); register int b asm("r9"); int main() { int c; a=2; b=3; c=a+b; return c; } 而這是使用一個臂gcc交叉編譯器生成的彙編代碼: $ arm-linux-gnueabi-gcc -c glo

    2熱度

    1回答

    我可以使用說四個通用寄存器說​​r8,r9,r10,r11每個與MOV指令獨立操作,並在CPU在單個時鐘中做所有這些指令的印象? 我想知道,因爲根據Agner Fog的指令表,它說MOV指令的倒數吞吐量是0.25。這意味着CPU應該能夠在每個週期執行4個MOV操作。或者我誤解了所有? 我是一個noob,自從兩個月以來一直在MASM學習Assembly(主要是爲了學習調試註冊表的工作方式,它非常有趣

    5熱度

    2回答

    維基百科給出了內存數據寄存器(https://en.wikipedia.org/wiki/Memory_buffer_register)和內存緩衝寄存器( https://en.wikipedia.org/wiki/Memory_data_register)的類似定義。 然而,其對處理器寄存器頁區分這兩個沒有說什麼將它們分開(https://en.wikipedia.org/wiki/Proces

    -1熱度

    2回答

    我想獲得x86機器上所有可用寄存器的列表。 我的主要目標是獲得名稱列表,即使是一個簡單的列表,只需要所有寄存器的名字就足夠了(沒有任何描述);我會採取任何東西,shell實用程序,c庫,posix庫,僞文件系統設置...我願意使用任何東西。

    0熱度

    1回答

    我讀過有關部分寄存器 的解釋,想明白爲什麼這個代碼:如果EAX持有非簽約正數 XOR EAX,EAX MOV AX, BX 只會工作,但如果有一個簽名的負在eax的號碼 你需要確保你添加的新位是111 ..,我明白它與二進制補碼 但我仍然不明白它。 編輯: 我明白上面的代碼將工作無論哪種方式 我想知道你爲什麼會需要墊這些額外1的(當我這樣做不是零EAX)

    0熱度

    1回答

    如果使用舊段寄存器是過時的,爲什麼在當前的日子確實還存在時,我有這樣的: rep movsb %ds:(%rsi),%es:(%rdi) 這是什麼「DS」和「ES」幹什麼?沒有這些細分市場就不一樣了?