簡體   English   中英

寄存器上的CPU操作如何影響存儲器?

[英]How do CPU operations on registers affect memory?

我試圖了解寄存器操作如何影響內存位置。 例如,這里是寄存器及其內容

Registers  Values

rax         10       
rdx         40       
rcx         20   
rbx         0x3008

和一些內存位置:

Memory    Values
0x2FF8     10
0x300     190
0x3008      3
0x3010     68

經過以下操作

movq $0,    %rax
movq $100,  %rdx
addq %rcx,  %rax
imulq %rax, %rdx

現在上述存儲位置的存儲值應該是多少? 當我更改寄存器值時,它們是否應該更改?

這些指令不會訪問任何存儲器位置,因此它們不會更改存儲器。 該摘錄所做的唯一內存訪問是將這些指令操作碼和操作數加載到CPU中。

該代碼是

   0:   48 c7 c0 00 00 00 00    mov    $0x0,%rax
   7:   48 c7 c2 64 00 00 00    mov    $0x64,%rdx
   e:   48 01 c8                add    %rcx,%rax
  11:   48 0f af d0             imul   %rax,%rdx

及其作用:

  1. 將0裝入RAX寄存器
  2. 將100裝入RDX寄存器
  3. RAX寄存器的當前值增加RCX寄存器的值
  4. 帶符號的乘以RAX的值乘以RDX的值(即100,如果在兩次中斷之間未更改的話),並將結果結果的最低64位存儲到RDX

因此結果應該是,給定rcx為20

rax         20      
rdx         2000       
rcx         20  

和rbx保持不變。

寄存器是“一種存儲器”,但與結構非常簡單的DRAM不同,它們是CPU芯片上一組更為復雜的端口和布線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM