5주차 실습 예제

ARM32 코드 해석 문제

문제 유형 ARM 어셈블리 코드 해석
포인트 분기와 레지스터 역할 읽기

문제 1. 3의 배수 처리 코드

아래 ARM 코드는 R0R1를 이용해 반복문을 돌면서 특정 시점에 multiple_of_3 라벨로 분기합니다. 이때 3의 배수를 찾았을 때 코드가 실제로 하는 동작을 가장 적절하게 고르세요.

.global _start
.text
_start:
    MOV R0, #1
    MOV R1, #1

loop:
    CMP R0, #101
    BEQ end_program

    CMP R1, #3
    BEQ multiple_of_3

    ADD R0, R0, #1
    ADD R1, R1, #1
    B loop

multiple_of_3: @3의 배수 숫자 처리
    ADD R0, R0, #1
    MOV R1, #1
    B loop

end_program:
    BX LR