【发布时间】:2021-04-01 13:50:54
【问题描述】:
我目前正在努力解决 Microrupt CTF 中的河内阶段。本 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.:请不要剧透如何解决这个阶段,我想自己想办法。谢谢!
【问题讨论】:
-
你不能“指向一个寄存器”,这只是存储(然后重新加载)到地址
r4 - 4的内存。内存地址是寄存器加上一个(负)偏移量。 -
啊,我明白了,结果(假设存储在 f4 中的是 43FC)将是 43F8。 (在这种情况下是一个地址)。感谢您指出这一点,我现在可以看到内存的变化。
-
我注意到,您删除了标签 risc,根据发布的参考资料,此控制器使用 RISC 16 位 CPU。为什么在这种情况下这个标签是错误的?
-
欢迎添加您的评论作为答案,我会接受的。
-
我删除了 RISC 标签,因为 MSP430 不是标准的 RISC 机器,一般来说,寻找有关 RISC 的东西的人在这里找不到任何相关的东西。立即存储到内存是非常非 RISC 的,而 MSP430 具有其他非 RISC 类特性。显然 TI 声称它具有类似 RISC 的内部结构 (quora.com/Is-MSP430-CISC-or-RISC)。我们如何对 MSP430 进行分类并不重要,只要它运行良好并且具有紧凑且易于解码的机器代码,无论 RISC 纯度如何。而且这个问题根本不是关于 RISC 设计理念的,只是关于 MSP430 的具体细节。
标签: assembly msp430 addressing-mode ctf