728x90
main:
push rbp
mov rbp, rsp
sub rsp, 16
lea rdx, [rbp-8]
lea rax, [rbp-4]
mov rsi, rax
mov edi, OFFSET FLAT:.LC0
mov eax, 0
call __isoc99_scanf
mov eax, DWORD PTR [rbp-4]
test eax, eax
jle .L2
mov eax, DWORD PTR [rbp-8]
test eax, eax
jle .L2
mov edi, 49
call putchar
.L2:
mov eax, DWORD PTR [rbp-4]
test eax, eax
jns .L3
mov eax, DWORD PTR [rbp-8]
test eax, eax
jle .L3
mov edi, 50
call putchar
.L3:
mov eax, DWORD PTR [rbp-4]
test eax, eax
jns .L4
mov eax, DWORD PTR [rbp-8]
test eax, eax
jns .L4
mov edi, 51
call putchar
.L4:
mov eax, DWORD PTR [rbp-4]
test eax, eax
jle .L5
mov eax, DWORD PTR [rbp-8]
test eax, eax
jns .L5
mov edi, 52
call putchar
.L5:
mov eax, 0
leave
ret
해석 : 상당히 재미있는 구문입니다. 이는 1사분면, 2사분면, 3사분면, 4사분면을 구분해주는 c언어 프로그래밍을 어셈블리어로 풀어놓은 것입니다. 여기서 짚어낼만한 부분은 딱 하나입니다. 바로 jle와 jns분기의 차이입니다. 참 재미있는 부분이죠. jle는 값이 음수일 때 분기하고 jns는 값이 양수일 때 분기합니다. 이 내용들이 서로 교차하여 분기문이 어우러지고 있는 것이 참 재미있습니다.
출처 : me
728x90
'호그와트' 카테고리의 다른 글
리스트 연결 구조체 (0) | 2022.11.10 |
---|---|
거북이가 연 파티 (0) | 2022.11.09 |
ssh 자유자재로 공격하기 (0) | 2022.11.09 |
MBR 어셈블리어와 간단한 해석 03 (0) | 2022.11.09 |
MBR 어셈블리어와 간단한 해석 02 (0) | 2022.11.09 |