0

有人可以在这里解释一下,TC17** 汇编器如何计算出“movh.a 和 lea”寻址(十六进制),如果我有一个像我的图片中显示的配置值,我如何为自己计算它们,这是定义的作为“常数”或“全局”。

我想要做的是,为自己创建/组装这条 32 位指令,但最后几天我没有进行任何处理。当然,我知道如何使用 Eclipse Toolchain 进行组装,但我不能在我的程序中使用这个工具链。我正在使用 PHP 编程,但这并不重要,如果我知道如何解决这个问题。

例如,这是一张带有 IDApro 视图的图片,其中包含我必须组装的命令:

IDA-Pro 截图

作为 32 位十六进制指令,它看起来像这样:

ASM: movh.a    a15, #@HIS(configuration_value_1)
HEX: 91 70 01 F8

ASM: lea   a15, [a15]@LOS(configuration_value_1)
HEX: D9 FF E4 67

我现在要做的是制定 HEX 汇编程序指令,并正确寻址我的变量。在这种情况下,它位于:“0x80177DA4”。

在指令集中,它的解释如下:

截图:movh.a 命令
截图:lea + long 偏移寻址模式

4

1 回答 1

1

是什么导致你的问题?一切都显示在您的图片中,这只是提取位的简单问题。

如果你从小端形式重新组合单词会更容易。因此:

movh.a = F8017091. 你可以看到这个常数实际上是8017(这并不奇怪)。 lea = 67E4FFD9由于愚蠢的编码,这有点棘手,所以让我们将前 16 位转换为二进制0110 0111 1110 0100:现在重新排列它们以获得011111 0110 100100,然后回到十六进制:7DA4

所以完整的地址是80177DA4

于 2017-10-03T01:10:28.157 回答