작성
·
47
0
안녕하세요, ldm 명령어가 수업 중 몇번 등장하는데요,
본론은, ldm r13, {r4, r5, r11, r13, pc}
에서 r13위치 기준으로 쭉 읽어오는 것 같은데요, (맞겠죠?)
이 명령어도 stack 의 pointer 를 바꾸는 것 같은데요, 그럼 사실상 POP 과 같은 명령어라고 보면 되는 건가요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. platformpjt02님.
LDM 명령어에 관한 질문을 해주셨네요. LDM은 “Load Multiple”의 약자로, 메모리에서 여러 레지스터로 데이터를 한꺼번에 로드하는 ARM의 명령어입니다. 질문하신 ldm r13, {r4, r5, r11, r13, pc}의 경우, r13을 기준으로 메모리에서 데이터를 읽어오며 지정된 레지스터로 로드합니다.
LDM 동작: 이 명령어는 지정된 여러 레지스터에 메모리 데이터를 동시 로드하는 기능을 합니다. r13부터 시작해 나열된 모든 레지스터에 차례로 데이터를 로드합니다.
POP과의 유사점:
LDM의 본래 기능은 스택 연산뿐만 아니라 여러 위치에서 데이터를 로드하려는 다양한 시나리오에서 유용합니다. 예를 들어, 루프 내에서 일정한 데이터를 동시에 로드하는 데에도 사용할 수 있습니다.
관련된 심화적인 내용이나 다른 질문이 있으면 언제든지 댓글로 추가 질문을 부탁드립니다. 유사 질문으로 도움이 될 수 있는 게시물을 아래에 안내드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.