์ค๋์ ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ฐ๋ณต๋ฌธ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ ํ๋ธ๋ฅผ ๋ณด๋ฉด์ ๊ณต๋ถํ๋ ค๊ณ ํ๋ค.
$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
'ํ๋ก์ ํธ > ์์คํ ํดํน' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ณ ํผ๋ผ๋ฏธ๋ ๋ง๋ค๊ธฐ (1) (0) | 2023.01.18 |
---|---|
[์์คํ ํดํน] ๋๋ฒ๊น (0) | 2023.01.17 |
[์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด ๊ธฐ๋ณธ ๋ฌธ๋ฒ (0) | 2023.01.15 |
[์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด ์์ฝ ํ๋ก๊ทธ๋จ ์์ฑ (1) | 2023.01.13 |
[์์คํ ํดํน] ์คํ ํ๋ ์ (0) | 2023.01.12 |