В настоящее время у меня есть небольшая (ARM Cortex M4) программа для сборки, отрывок, для которого у меня есть вопрос ниже:Какова ценность счетчика программ при использовании их в инструкции? (Монтаж)
PC Instruction
0x9c MOV R0, #0
0x9e LDR.N R1, [PC, #0x20]
0xa0 STR.N R0, [R1]
Во второй строке PC = 0x9e
. Но, когда вы получаете доступ к ПК как к одному из операндов, какое значение оно имеет? 0x9e
или 0xa0
?
Вы не можете сделать что-то вроде 'beq', чтобы проверить это? – mstbaum
@mstbaum Этот код является переведенной версией из моего кода c, я не думаю, что могу изменить любой ассемблерный код, но я пытаюсь понять его. –
Технически он имеет значение '0xa2' в соответствии с руководством: _ Значение ПК будет на 4 байта больше адреса этой инструкции_. Однако будьте осторожны, потому что ваш дизассемблер, возможно, уже компенсировал это. Возможно, вы захотите проверить машинный код. – Jester