๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ์ ํŠธ/์‹œ์Šคํ…œ ํ•ดํ‚น

[์‹œ์Šคํ…œ ํ•ดํ‚น] ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๋ฐ˜๋ณต๋ฌธ ๊ตฌํ˜„

728x90

https://youtu.be/aUCzNzBO6Hg

์˜ค๋Š˜์€ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์œ ํŠœ๋ธŒ๋ฅผ ๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.


$nano loop.s

loop๋ผ๋Š” ์ด๋ฆ„์˜ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค์ฝ”๋“œ๋ฅผ nano๋กœ ์ž‘์„ฑํ•œ๋‹ค.

section .data
        msg db "A"

section .text
        global _start

_start:
        mov rax,1
        mov rdi,1
        mov rsi, msg
        mov rdx,1

        syscall

์ถœ๋ ฅ์„ ํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „์‹œ๊ฐ„ ๊นŒ์ง€ ๋ฐฐ์› ๋˜

mov rax,1์„ ํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.

์ด์™€ ๊ฐ™์ด ํƒ€์ดํ•‘ํ•œ ํ›„ ์ €์žฅํ•ด์„œ ํ•œ๋ฒˆ ์ถœ๋ ฅํ•ด๋ณธ๋‹ค.

์œ„์™€ ๊ฐ™์ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์„œ ์‹คํ–‰๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด A๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด์„œ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹ค.

์ด๋Š” ์ตœ์ข…์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ด์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์œ„์˜

์†Œ์Šค์ฝ”๋“œ ์•„๋ž˜์— 

mov rax,60

syscall

์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์œ„์ฒ˜๋Ÿผ A๋งŒ ์ถœ๋ ฅ์ด ๋œ๋‹ค.


๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•˜์—ฌ A๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ 

์œ„์—์„œ ์ž‘์„ฑํ–ˆ๋˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.

section .data
        msg db "A"

section .text
        global _start

_start:
        mov rax,1
        mov rdi,1
        mov rsi, msg
        mov rdx,1
        mov r10,1

again:
        cmp r10, 100
        je done
        syscall
        mov rax,1
        inc r10
        jmp again

done:
        mov rax,60
        mov rdi,0
        syscall

๋ฐ˜๋ณต๋ฌธ์„ ์œ„ํ•ด r10 ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํ• ๋‹นํ•ด์ค€๋‹ค. (mov r10, 1)

๋ฐ‘์— againํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์—ฌ

cmp r10, 100 ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด r10์˜ ํฌ๊ธฐ์™€ 100์„ ์„œ๋กœ ๋น„๊ตํ•œ๋‹ค.

je done ์„ ์‚ฌ์šฉํ•ด ๋งŒ์•ฝ r10์ด 100์ด ๋๋‹ค๋ฉด, done์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

์ด ์•„๋ž˜์˜ syscall์€ ํ˜„์žฌ rax๊ฐ€ 1์ด๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด ๋œ๋‹ค.

rax๋Š” ํ•จ์ˆ˜ ์‹คํ–‰ ํ›„ ๊ทธ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‹ด๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— syscall ์ดํ›„์— mov rax,1์„ ์‚ฌ์šฉํ•ด 1๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ค€๋‹ค.

inc r10์„ ์ด์šฉํ•ด r10์˜ ๊ฐ’์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

jmp๋Š” again ํ•จ์ˆ˜๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.

 

์œ„์™€ ๊ฐ™์ด ์†Œ์Šค์ฝ”๋“œ ์ž‘์„ฑ ํ›„ ์ €์žฅํ•˜์—ฌ ์‹คํ–‰ํ•ด๋ณธ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด A๊ฐ€ 99๋ฒˆ ์ถœ๋ ฅ๋œ๋‹ค.

1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ 100์ด ๋˜๋ฉด done์œผ๋กœ ์ ํ”„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 99๋ฒˆ์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

2023.01.15 - [ํ”„๋กœ์ ํŠธ/์‹œ์Šคํ…œ ํ•ดํ‚น] - [์‹œ์Šคํ…œ ํ•ดํ‚น] ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

 

[์‹œ์Šคํ…œ ํ•ดํ‚น] ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

https://youtu.be/YiXc3Mi3Jtc ์˜ค๋Š˜์€ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์„ ๊ณต๋ถ€ํ•ด๋ณธ๋‹ค. MOV A, B : B์˜ ๊ฐ’์„ A์— ๋„ฃ๋Š”๋‹ค. ex) MOV EAX, 100 : EAX์— 100์„ ๋„ฃ๋Š”๋‹ค. LEA A, B : A์˜ ๊ฐ’์„ B์˜ ๊ฐ’์œผ๋กœ ๋ณต์‚ฌํ•œ๋‹ค. ex)LEA EAX, [EAX+1000] : EAX์—

dangsdangs.tistory.com