这一系列 HP PA-RISC 指令的目的是什么?

逆向工程 拆卸
2021-06-11 04:23:16

我正在查看 HP SOM 可执行文件中的启动代码。反汇编看起来是这样的:

    00004010 b4 00 10 c2                      addi,tr 61,r0,r0
    00004014 e8 00 01 aa                      b,l,n 0x000040f0,r0

addi指令将文字值61与 的值r0相加,然后将总和存储在 中r0根据手册,从r0寄存器读取总是产生 0,写入r0被丢弃。因此,计算没有明显的效果,可以被认为是空操作。

但是,tr指令完成者控制以下指令是否“无效”,tr根据我addi对手册中条目的阅读,(true) 表示“始终无效”

目的:将立即数添加到寄存器并有条件地使以下指令无效

条件:条件是第 D-5 页的表 D-6 中显示的任何 32 位加法条件。当未指定条件完成器时,使用“从不”条件。当添加的值满足指定条件时,设置操作部分中的布尔变量“cond_satisfied”。

最终结果是该addi指令的净效果总是使后面的b,l,n调用指令无效但是如果你总是使下面的指令无效,为什么不直接省略它呢?

其余的启动代码“感觉”就像是用汇编语言编写的,而不是从 HLL 编译的。一定有人故意编码了这个指令对。那么编写这样的代码的目的是什么?

0个回答
没有发现任何回复~