정동규
10
2021-04-10 22:51:18
4
139

ARM ARCHITECTURE 관련 간단한 질문드리겠습니다 부탁드립니다


0000 1010 0000 0000 0000 0000 0000 0000

arm architecture 에서 맨 앞 0000은 condition code eq이고, 현재 z flag값은 0으로 설정되어 있습니다.

저는 1010이 B 명령어를 실행시키는것 까진 알겠는데, Z FLAG가 0으로 설정되어 있으면 혹시 이 명령어는 실행이 안되나요??? 안된다면 이유도 설명해주시면 감사하겠습니다

0
  • 답변 4

  • 레모나
    14
    2021-04-10 23:33:39 작성 2021-04-10 23:35:18 수정됨

    안녕하세요 

    지금은 웹과 모바일 APP을 을 많이 개발 하지만 

    예전에 ARM 을 공부 할때 추억이 나서 도움이 될까 해서 답변을 적습니다. 

    B = 무조건 분기 

    이라고 책에 나와 있습니다. 

    B 명령어만 있다면 z 플레그 값을 보지 않고 무조건 분기를 합니다. 

    조건부 실행은  

    BEQ = z상태 플래그를 보고 조건부 실행 

    BNE = z상태 플래그를 보고 조건부 실행 

    같이 조건 니모닉이 있습니다/

    EQ  = 상태 플레그 (z)

    NE = 상태 플레그 (z)

    CS HS  = 상태 플레그 (C)

    CC LO  == 상태 플레그 (c)

    MI  == = 상태 플레그 (n)

    등등등 이외에 많이 있네요..

    example)

    "if(i<10)"

    {

    c = i+0;

    }

    else {

    c = i + 'A' -10;

    }

    ARM 어셈플리어로 적으면 

    CMP I,#10

    ADDLO c, I, #'0'

    ADDHS c, I, #'A'-10


    같이 끝에 조건부로 LO HS 등의 추가 조건 니모닉이 달립니다. 

    B 명령어도 똑같이 B에 조건 니모닉을 추가 하여 명령어를 조건 명령을 할수 있습니다. 


    참고 서적 : ARM system Developer's Guide (주) 씨렙 시스 

    참고 부분 

    1. 2.2.6 조건부 실행 

    2. 3.8 조건부 실행 

    3. 6.5 조건 분기 명령어의 활용 

    해당 책의 해당 부분을 읽의 시면 더욱 잘 이해 하실듯 합니다. 






  • 정동규
    10
    2021-04-11 00:16:10

    답변에 감사드립니다. 

    제가 명령어 해석을 잘못했더군요 CMP 명령어 뒤에 오는 B 명령어라 B가 아니라 BEQ 명령어가 맞습니다. BEQ 명령어의 경우, Z FLAG 값이 0이어야 실행이 되는건지 1이어야 실행되는건지 여쭤보고 싶습니다

  • 레모나
    14
    2021-04-11 01:35:45

    아 그렇군요

    책을 다시 보니 

    니모닉을 보니 

    EQ = z flag가 1일때 

    NE = z flag가 0일때 

    실행 된다고 되어 있네요 . 

  • 정동규
    10
    2021-04-12 15:55:03

    정말 갑사합니다 많은 도움이 되었습니다!!

  • 로그인을 하시면 답변을 등록할 수 있습니다.