mov.b 指令中的负操作数

Negative operand in mov.b Instruction

我目前正在解决 Microcorruption CTF 中的 Hanoi 阶段。此 CTF 重点关注 MSP430 系列(RISC,16 位)。

我偶然发现了以下几行:

445c:  c443 fcff      mov.b #0x0, -0x4(r4)
.
.
.
4472:  5f44 fcff      mov.b -0x4(r4), r15

其中包含引用 (r4) 前面的负操作数的移动指令。 我假设这将指向存储在 r4 中的任何内容前面的寄存器(前面的两个词)但是查看内存转储这个假设似乎不正确。

我参考了https://www.ti.com/lit/ug/slau049f/slau049f.pdf,第3-52页是对mov.b的参考。

请详细说明这里发生了什么,或者给我一些关键字来搜索。

感谢任何帮助!

P.S.: 请不要破坏如何解决这个阶段,我想自己想办法。谢谢!

正如Peter Cordes评论中所指出的,我最初的想法是正确的。 (虽然措辞不对)

memoryaddress中存储的值等于r4中存储的值加上偏移量-4的总和寄存器加-4(偏移量)和 存储在 r15 中。 原来如此。


示例:

如果

r4 = 0x43FC 和 0x43F8 = 0xAB

说明

mov.b -0x4(r4), r15

将产生值 0x43FC - 0x4 = 0x43F8

在这个地址,存储了0xAB。

结果:

r15 = 0xAB