У меня есть проект Windows Mobile 6 ARMV4I, где я хотел бы получить значение счетчика программ.Получение значения ПК в ARM-сборке
функция объявлена так:
extern "C" unsigned __int32 GetPC();
Моя сборка код выглядит следующим образом:
GetPC FUNCTION
EXPORT GetPC
ldr r0, [r15] ; load the PC value in to r0
mov pc, lr ; return the value of r0
ENDFUNC
Но, когда я вызываю функцию GetPC()
, я получаю такое же число каждый раз. Итак, я предполагаю, что мое собрание не делает то, что я думаю, что это делает. Может ли кто-нибудь указать, что я могу делать неправильно?
Спасибо, PaulH
Предполагая, что он использует инструменты Microsoft, встроенный ARM ассемблере не поддерживается. – ctacke
Это мой первый набег на сборку, поэтому я, вероятно, недопонимаю вас. Но R15 - это счетчик программ, а R0 - возвращаемое значение в соответствии с http://www.pentest.co.uk/documents/exploringwce/exploring_wce_shellcode.html#N10081. Вы говорите, что сайт ошибочен, и это на самом деле R14? Спасибо – PaulH
@ctacke - Да, я использую VS2008, а встроенные команды '__arm' не поддерживаются. – PaulH