Как операции ЦП с регистрами влияют на память? - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь понять, как операции с регистрацией влияют на ячейки памяти.Например, вот регистры и их содержимое

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

Что должно бытьзначения памяти для вышеуказанных областей памяти?Должны ли они меняться при изменении значений регистра?

1 Ответ

0 голосов
/ 16 октября 2018

Эти инструкции не используются в ячейках памяти, поэтому они не меняют память.Единственный доступ к памяти, который делает этот отрывок, состоит в том, чтобы загрузить эти инструкции коды операций и операнды в ЦП.

Код

   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, который очень прост по своей структуре, это гораздо более сложный набор портов и соединений напроцессор кремниевый.

...