[英]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
及其作用:
RAX
寄存器 RDX
寄存器 RAX
寄存器的當前值增加RCX
寄存器的值 RAX
的值乘以RDX
的值(即100,如果在兩次中斷之間未更改的話),並將結果結果的最低64位存儲到RDX
因此結果應該是,給定rcx
為20
rax 20
rdx 2000
rcx 20
和rbx保持不變。
寄存器是“一種存儲器”,但與結構非常簡單的DRAM不同,它們是CPU芯片上一組更為復雜的端口和布線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.