UM10398 LPC111x/LPC11Cxx User manual Rev. 12,3 - 10 июня 2014 говоритПоддерживает ли LPC111x инструкцию MOV с высокими регистрами?
В этих инструкциях, Rd и Rm должны указать только R0-R7
в "28.5.5.5.3 Ограничения" в «28.5. 5.5 MOV и MVN ".
С другой стороны, "28.5.5.5.5 Пример" в UM10398 говорит
MOVS R0, #0x000B ; Write value of 0x000B to R0, flags get updated MOVS R1, #0x0 ; Write value of zero to R1, flags are updated MOV R10, R12 ; Write value in R12 to R10, flags are not updated MOVS R3, #23 ; Write value of 23 to R3 MOV R8, SP ; Write value of stack pointer to R8 MVNS R2, R0 ; Write inverse of R0 to the R2 and update flags
В этом примере, R10
, R12
, R8
и SP
используются, несмотря на их не делает похоже R0-R7
. (SP
кажется эквивалентна R13
, в соответствии с UM10398 28.4.1.3 Основные регистры)
Еще одна вещь в том, что, когда я прочитал re-ejected-thumbref2.pdf, я нашел
MOV Rd, Rm, 0 1 0 0 0 1 1 0 H1 H2 _ Rm _ _ Rd _
и это предполагает, что верхние регистры доступны для использования с инструкцией MOV
. Этот документ также сказать, что
Rd или Rm должно быть * высокий регистр *
об этом MOV Rd, Rm
инструкции.
Хотя инструкции с S
(с обновлением флага) не указаны в этом документе (в этом документе указаны инструкции без S
), и этот документ должен быть для другого ЦП (возможно, один из них используется в GBA, в соответствии с URL-адресом path), я использовал этот документ в качестве ссылки, надеясь, что набор команд LPC111x подобен описанию в этом документе.
В заключение, я могу сделать
MOV R0, R1
(Low регистров в низких регистрах)MOV R8, R1
(Low регистров в высоких регистрах)MOV R0, R9
(Высокие регистры в низких регистрах)MOV R8, R9
(Высокие регистры к высоким регистрам)
в LPC111x (или LPC1114FN28/102, если вам нужен конкретный процессор)?