processor state ==> ARM state or Thumb state 가 존재


operating mode ==> user mode or privileged mode 가 존재


user mode : user


privileged mode 종류 : Fast interrupt, Interrupt, Supervisor, Abort, System, Undefined


-----


<ARM state register set>


ARM state에서는 16개의 general register들(r0-r15)과 1개 또는 2개의 status register가 사용됨


CPSR(Current Program Status Register) : condition code flag 값들과 current mode bit값을 가지고 있음


privileged mode일때는 추가로 SPSR(Saved Program Status Register)에 접근할 수 있음


-----


<Thumb state register set>


8개의 general register(r0-r7)과 PC, stack pointer SP(ARM r13), LR(ARM r14), CPSR이 사용됨


-----


<APCS (Arm Procedure Call Standard)>


r0-r3 : function parameters (caller-saved registers)


=> function parameter가 4개 이상인 경우 추가 인자들은 스택에 저장됨


r4-r11 : general (callee-saved registers)


r13(sp) : stack pointer


r14(lr) : link register


=> Branch with Link(BL or BLX) 명령어가 실행될 때 r15(pc)의 복사본을 받음


r15(pc) : program counter


=> ARM state일 때는 word-aligned, Thumb state일 때는 halfword-aligned 되어있음


-----


<condition codes>


EQ : equal


NE : unequal


VS : overflow


VC : no overflow


<unsigned의 경우> HS : >=, HI : <, LS : <=, LO : <


<signed의 경우> GE : >=, GT : >, LE : <=, LT : <, PL : >= 0, MI : < 0







'Assembly > 공개글' 카테고리의 다른 글

MIPS subroutine calling convention  (0) 2015.08.12
ida 단축키  (0) 2015.08.09
MIPS 어셈블리 <-> 기계어 mapping table  (0) 2015.08.03
MIPS pseudo instruction  (0) 2015.08.03
MIPS jal nop branch delay slot  (0) 2015.07.11
Posted by huammmm1
,