리턴 값
int f() {
return 123;
}
x86
f():
mov eax, 123
ret
- gcc / mvsc 둘 다 동일
ARM
f():
movs r3, #123
mov r0, r3
bx lr
- r0 레지스트에 return value를 저장
MIPS
f():
li $2,123
jr $31
- $2($v0)에 return value를 저장
f():
jr $31
li $2,123
- li와 jr의 위치가 변경 될 수도 있는데 이는 "브랜치 지연 슬롯"으로 인해 변경된 것이다.
- 브랜치 지연 슬롯은 RISC의 특징이다. 점프나 분기 명령어 다음에 위치하는 명령어를 실행 후 분기한다.
❗ 저작권 및 참고
'Hacking > Reversing' 카테고리의 다른 글
[Reversing] RISC , CISC (feat. Thumb) (0) | 2022.08.04 |
---|---|
[Reversing] 빈 함수 (0) | 2022.08.03 |