Tricore拆解“常数”

时间:2017-10-03 00:28:56

标签: assembly addressing-mode infineon

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

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

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

screenshot of 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-assembler指令,并正确寻址我的变量。在这种情况下,它位于:“0x80177DA4”。

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

Screenshot: movh.a command
Screenshot: lea + long offset addressing mode

1 个答案:

答案 0 :(得分:1)

导致你出现问题的原因是什么?一切都显示在你的照片中,它只是一个简单的提取位的问题。

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

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

因此完整地址为80177DA4