Arm Thumb ( blx, bx, Thumb2, IT명령어, if then )
먼저 Thumb의 종류에는, Thumb과 Thumb2가 있다. Thumb은 2byte 명령어고, Thumb2는 2byte, 4byte로 명령어를 2개로 나눴다. CPSR 레지스터에 J, T bit가 있는데 이게 01로 set 되면 thumb 모드로 바뀐다. Thumb은 뭘까?? Arm 명령어를 Thumb 명령어로 바꾸는 것이다. 바꾸는 이유는 더 짧은 실행 시간과 code density 즉, 코드 사이즈 줄이기 때문이다. 이렇게 바꾸는 걸 Interworking이라 부른다. 굳이 긴 명령어가 필요없고 thumb이 지원하는 선에서 동작 가능하다면 변환해서 동작한다. 어떻게 서로 전환할까?? BLX(Branch link) , BX를 이용하여 함수 이름이나 레지스터를 뒤에 적어줘서 바꾼다. 예를 들어보자, 하..
2022. 4. 26.