ARM M4 어셈블리에서 printf를 호출하려고하는데 몇 가지 문제가 있습니다. 목적은 R1의 콘텐츠를 덤프하는 것입니다. 이 코드는 내가 둘 때, R0에 주소를 "output_string"것을 충족 다음ARM Cortex-M4 : 어셈블리에서 printf를 호출 할 때 문제가 발생했습니다.
.data
.balign 4
output_string:
dcb "content in R1 is 0x%x\n", 0
....
.text
....
push {r0, r1}
mov r1, r0
ldr r0, =output_string
bl printf
pop {r0, r1}
문제처럼, 값은 심볼이 "output_string"경우에 값이, 예를 들어 추가 1. 추가 0x2000이면 R0은 0x2001 값을 가져옵니다.
THUMB/ARM 모드와 관련이 있다고 생각합니다. 하지만 데이터 섹션에 "output_string"을 선언했습니다. 왜 어셈블러가 여전히 명령어 주소로 변환합니까?
또는 이러한 어셈블리 내 함수 호출을 수행하는 좀 더 공식적인 방법이 있습니까?
어떤 툴체인? – auselen
iar를 사용하고 있습니다. 6.73 –