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
本節(jié)中的示例說明名稱還原過程。
該示例顯示了示例 C++ 程序。在該示例中,所有函數(shù)的鏈接名稱都已改編;也就是說,函數(shù)的簽名信息已編碼到函數(shù)的名稱中。
class banana {
public:
int calories(void);
banana();
~banana();
};
int calories_in_a_banana(void)
{
banana x;
return x.calories();
}
編譯器輸出的匯編代碼結(jié)果如下。
_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
執(zhí)行 C++ 名稱還原器將會還原其認(rèn)為已改編的所有名稱。輸入:
armdem calories_in_a_banana.asm
運(yùn)行 C++ 名稱還原器后的結(jié)果如下所示。_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