Проблемы с загрузкой в ​​регистр со смещением из другого регистра - PullRequest
0 голосов
/ 10 сентября 2018

Я создаю 8-битный процессор.У меня есть основные инструкции, такие как mov, ld, st, add, sub, mult, jmp.Я пытаюсь собрать свои инструкции вместе.Сначала я перемещаю базовый адрес значения в регистр 1 (R1).Затем я хочу загрузить регистр 2 (R2) со значением.Поэтому мои инструкции выглядят так:

1 mov R1, 0xFFFF
2 ld R2, [R1+0]

Мои определения кода операции:

ld: 0001
mov: 1111

Коды регистров:

R1: 0001
R2: 0010

Поэтому мои инструкции в двоичном виде выглядят так:

1 mov R1, 0xFFFF = 1111 0001 0xFFFF
2 ld R2, [R1+0] = 0001 00010 

Но на моем втором направлении для загрузки, как я могу гарантировать, что значение, сохраненное в ячейке памяти, которую я переместил в R1, будет использоваться.Я впервые делаю что-то с компьютерной архитектурой, поэтому я немного растерялся.

1 Ответ

0 голосов
/ 10 сентября 2018

как я могу обеспечить использование значения, хранящегося в ячейке памяти, которую я переместил в R1.

Создавая свое оборудование для правильной обработки опасности чтения после записи (https://en.wikipedia.org/wiki/Hazard_(computer_architecture)#Data_hazards).

Или

  • делает его простым нетранслируемым ЦП, в котором одна инструкция записывает данные в регистры до того, как следующая инструкция читает какие-либо регистры
  • обнаружение зависимости и остановка конвейера
  • обход пересылки. (https://en.wikipedia.org/wiki/Hazard_(computer_architecture)#Eliminating_hazards)
...