호그와트

던던댄스

영웅*^%&$ 2022. 11. 9. 14:52
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언어 프로그래밍을 어셈블리어로 풀어놓은 것입니다. 여기서 짚어낼만한 부분은 딱 하나입니다. 바로 jlejns분기의 차이입니다. 참 재미있는 부분이죠. 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