ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
本节中的示例说明名称还原过程。
该示例显示了示例 C++ 程序。在该示例中,所有函数的链接名称都已改编;也就是说,函数的签名信息已编码到函数的名称中。
class banana {
public:
int calories(void);
banana();
~banana();
};
int calories_in_a_banana(void)
{
banana x;
return x.calories();
}
编译器输出的汇编代码结果如下。
_Z20calories_in_a_bananav:
STMFD SP!, {A3, A4, V1, LR}
MOV A1, SP
BL _ZN6bananaC1Ev
BL _ZN6banana8caloriesEv
MOV V1, A1
MOV A1, SP
BL _ZN6bananaD1Ev
MOV A1, V1
LDMFD SP!, {A3, A4, V1, LR}
BX LR
执行 C++ 名称还原器将会还原其认为已改编的所有名称。输入:
armdem calories_in_a_banana.asm
运行 C++ 名称还原器后的结果如下所示。_ZN6bananaC1Ev、_ZN6banana8caloriesEv 和 _ZN6bananaD1Ev 中的链接名称已还原。
calories_in_a_banana():
STMFD SP!, {A3, A4, V1, LR}
MOV A1, SP
BL banana::banana()
BL banana::calories()
MOV V1, A1
MOV A1, SP
BL banana::~banana()
MOV A1, V1
LDMFD SP!, {A3, A4, V1, LR}
BX LR