cpu-registers

    2熱度

    1回答

    我正在使用我的教科書中的Irvine32庫編寫MASM程序。我想排列我的打印列,但是我找不到任何關於如何用C/C++的製表符停止字符串/t,所以我做了一個過程來確定數字有多少個小數位,並指定spacer字符串相應地變量。 我的問題是當試圖分配spacer一個新的字符串,我得到組裝錯誤。我曾嘗試 mov spacer, "New String",0 和 mov spacer, "New Stri

    2熱度

    2回答

    我試圖推入堆棧的值爲one less than %ecx。 所以,我想這個指令是: pushl $(%ecx - 1) 但是我從as得到下面的錯誤。 fact.s: Assembler messages: fact.s:49: Error: register value used as expression 作爲一種變通方法,我做了以下內容: movl %ecx, %edx subl

    -1熱度

    1回答

    我試圖編寫一個程序來模擬Java中的一個虛擬機來完成一個任務。這將是一個基於寄存器的虛擬機,顯然它將存儲和執行大量指令。我在如何將機器指令解碼爲高級Java語言時遇到了問題。 我在網上搜索,發現了一些例子,如下面的例子,但他們只寫C,目前我沒有足夠的時間學習。 unsigned program[] = { 0x1064, 0x11C8, 0x2201, 0x0000 }; void decod

    2熱度

    3回答

    我正在將程序從EMU8086環境轉換爲NASM。當裝配NASM給出了這些錯誤: system\kernel.asm:14: error: invalid combination of opcode and operands system\kernel.asm:20: error: invalid combination of opcode and operands system\kernel.as

    0熱度

    1回答

    我從書«Java性能»閱讀下面的代碼被發現服用的時間數量驚人的與多個寄存器的機器上運行: Vector v = initVector(); for (int i = 0; i < v.size(); i++) { process(v.get(i)); } 因爲get()和大小() Vector類的方法是同步的,事實證明所有這些調用所需的寄存器刷新(到主存)是一個

    0熱度

    1回答

    我已經瞭解到,按照慣例,當在函數中使用's'寄存器時,它們不應該被修改並且應該被堆疊存儲。 將s寄存器的值移到臨時寄存器並使用並返回它是錯誤的嗎?如果是這樣,爲什麼?

    0熱度

    1回答

    在研究C代碼的拆卸時,這讓我感到震驚。通常,在保存幀指針之後的函數組裝中,我們推送被保存的寄存器並在返回之前將其恢復。 x86 ABI告訴我們哪些寄存器是被調用者/調用者保存的。然而,當我看到編譯器在組裝這些函數時行爲不同時,我的問題就開始了。例如: Case 1 (gdb) disassemble EVP_CipherInit_ex Dump of assembler cod

    -2熱度

    2回答

    我所構成一個同學詢問以來的OS是一種擴展的或虛擬機的問題,該編譯器需要知道寄存器或處理器的指令的數目時,它產生的彙編代碼C程序。 我已經花了,而在網上淘,這裏是我的想法...... 它並不需要知道寄存器的數量,因爲作爲一個虛擬機有無限的資源在每個內存發言權。 但是,它需要知道處理器知道它能夠在特定時間執行特定功能時的指示。 我想知道如果有人能澄清這對我來說,因爲我不是在我的答案非常有信心。

    0熱度

    1回答

    我一直在使用eax等在我的64位操作系統上編程,但rax的工作原理完全相同。在exx vs rxx中編寫內聯彙編有什麼好處?如果任何exx在各個平臺上都兼容,並且可以節省使用預定義處理器宏在exx和rxx之間切換的時間。

    6熱度

    1回答

    指令指針和程序計數器有什麼區別嗎?我相信他們都指的是同樣的東西,即eip/rip註冊表,雖然到目前爲止我所做的研究在我看來並不是很清楚。