三芯拆解"Constants"
Tricore Disassembling "Constants"
有人能给我解释一下,TC17** assembler 是如何计算出 "movh.a and lea" 寻址(十六进制)的,以及如果我的配置值类似于在我的图片中显示,它被定义为 "constant" 或 "global"。
我想做的是,creating/assemble这个32位的指令是给自己用的,不过最近几天没有做任何处理。当然,我知道如何 assemble 使用 Eclipse 工具链,但我不能在我的程序中使用这个工具链。我正在用 PHP 编程,但这并不重要,如果我知道如何解决这个问题。
例如,这是我必须组装的命令的 IDApro 视图的图片:
作为 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
是什么导致了您的问题?一切都在你的照片中,只是提取位的简单问题。
如果你从小端形式重新组合单词会更容易。因此:
movh.a = F8017091
。您可以看到常量实际上是 8017
(这并不奇怪)。
lea = 67E4FFD9
由于愚蠢的编码,这有点棘手,所以让我们将前 16 位转换为二进制:0110 0111 1110 0100
。现在重新排列它们得到 011111 0110 100100
,然后回到十六进制:7DA4
所以完整地址是80177DA4
。
有人能给我解释一下,TC17** assembler 是如何计算出 "movh.a and lea" 寻址(十六进制)的,以及如果我的配置值类似于在我的图片中显示,它被定义为 "constant" 或 "global"。
我想做的是,creating/assemble这个32位的指令是给自己用的,不过最近几天没有做任何处理。当然,我知道如何 assemble 使用 Eclipse 工具链,但我不能在我的程序中使用这个工具链。我正在用 PHP 编程,但这并不重要,如果我知道如何解决这个问题。
例如,这是我必须组装的命令的 IDApro 视图的图片:
作为 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
是什么导致了您的问题?一切都在你的照片中,只是提取位的简单问题。
如果你从小端形式重新组合单词会更容易。因此:
movh.a = F8017091
。您可以看到常量实际上是 8017
(这并不奇怪)。
lea = 67E4FFD9
由于愚蠢的编码,这有点棘手,所以让我们将前 16 位转换为二进制:0110 0111 1110 0100
。现在重新排列它们得到 011111 0110 100100
,然后回到十六进制:7DA4
所以完整地址是80177DA4
。