나는 .obj
을 가지고 있으며 원래의 소스 파일을 가지고 있지 않습니다.수동으로 수정 된 디스 어셈블리 어셈블리의 주소를 자동으로 수정하는 도구
내가 사용하는 스택 레지스터에 푸시/팝하도록주의하면서 특정 내용의 지침에 자신의 어셈블리를 삽입하여 결과 어셈블리 파일을 수정합니다. 원본 콘텐츠를 스레 싱하지 않습니다.
왜? 아마도 특정 어셈블리 명령어가 실행될 때마다 (즉, 디버거/JTAG없이) 핀을 토글하고 싶을 것입니다.
그런 다음 조립을 다시 .obj
으로하고 싶지만 자체 어셈블리를 삽입 했으므로 분기의 상대 주소가 올바르지 않습니다.
질문
자동 수정 상대적 주소 또는 내가 내 어셈블리를 삽입 할 때 수동으로해야 할 것이다 ARM 도구가 있습니까?
이것은 ARM Cortex M4 용이지만 중요하지 않다고 생각합니다.
레이블을 사용하여 레이블이 0x1000을 사용하는 경우에도 레이블을 사용하여 어셈블러에서 해결하도록합니다. r1, r1, r2를 추가하고 lab0x1000 : r1, r1, r2를 추가하고 lab0x1000을 분기를 사용하는 사용자로 변경합니다. –
@old_timer는'.obj'가 디버그 모드로 컴파일되지 않더라도 작동합니다. – Adrian
자신 만의 디스어셈블러를 쓰면 (이 바이너리에서 thumb2가 사용 되었다면 더 고통 스러울 것입니다.) 라벨로 해체 할 수 있습니다. 또는 binutils로 가서 binutils를 수정하여 PC 상대 주소를 출력 할 때 대신 레이블을 출력 할 수 있습니다. –