Понимание основного кода сборки - PullRequest
0 голосов
/ 01 июля 2018
pointr: .word pointr
mov #pointr,r0
mov pointr,r1

Кто-нибудь может объяснить, пожалуйста, разницу между значениями r0 и r1?

1 Ответ

0 голосов
/ 08 марта 2019

TL; DR - r0 и r1 будут содержать одно и то же значение, но только из-за инициализации в первой строке

Давайте разберем это, инструкция за инструкцией:

pointr: .word pointr

Это означает, что «определите метку с именем« указатель »в адресе X и поместите значение метки (в данном случае X) в этот адрес». Таким образом, в адресе X есть слово, содержащее значение X.

mov #pointr,r0

Это означает «переместить значение метки 'pointr' (в данном случае адрес X) в r0". Таким образом, r0 будет содержать значение X, потому что 'pointr' является меткой для этого адреса.

mov pointr,r1

Это означает «переместить значение, которое находится в адресе метки 'pointr' (в данном случае также X) в r1". Таким образом, r1 будет содержать значение X из-за части «.word pointr» первой строки в коде.

Чтобы уточнить, если мы должны заменить первую строку кода, чтобы получить:

pointr: .word pointr+2 mov #pointr,r0 mov pointr,r1

значение r0 не изменится (по сравнению с исходным кодом), но значение r1 изменится.

...