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 |