【发布时间】:2016-05-20 05:24:15
【问题描述】:
UM10398 LPC111x/LPC11Cxx User manual Rev. 12.3 — 2014 年 6 月 10 日说
在这些指令中,Rd 和 Rm 只能指定 R0-R7
在“28.5.5.5 MOV 和 MVN”中的“28.5.5.5.3 限制”中。
另一方面,UM10398 中的“28.5.5.5.5 示例”表示
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 的指令被称为更新标志)并且本文档应该用于另一个CPU(可能用于GBA,根据到 URL 路径),我参考了这个文档,希望 LPC111x 的指令集和这个文档中描述的相似。
总之,我能做到吗
-
MOV R0, R1(低位寄存器到低位寄存器) -
MOV R8, R1(低位寄存器到高位寄存器) -
MOV R0, R9(高位寄存器到低位寄存器) -
MOV R8, R9(高位寄存器到高位寄存器)
在 LPC111x(或 LPC1114FN28/102,如果您需要特定的 CPU)?
【问题讨论】:
标签: assembly lpc machine-code