Assembly Hello World
section .data
msg db "hello world" ; data 영역에 msg라는 포인터 변수가 Hello world의 주소를 갖는다
section .text
global_start ; text영역에 start함수 정의
_start:
mov rax, 1 ; rax에 1입력 (System Call Write)
mov rdi, 1 ; rdi에 1입력 (unsigned int fd)
mov rsi, msg ; rsi에 데이터 영역에 있는 포인터 변수 msg입력 (const char *buf)
mov rdx, 12 ; mov rdx, 12 (문자열의 글자 수)
syscall ; System Call (sys_write)
mov rax, 60 ; rax에 60입력 (System Call exit)
mov rdi, 0 ; rdi 0입력 (error_code)
syscall ; System Call (sys_exit)
System Call이란 것은 커널에서 정의한 어셈블리 함수이다 밑의 링크를 참고 하자
https://rninche01.tistory.com/entry/Linux-system-call-table-%EC%A0%95%EB%A6%ACx86-x64
Linux system call table 정리(32bit, 64bit)
어셈블리어로 쉘 코드를 작성할 때 종종 system call table을 찾아보는 일이 있어서 간략하게 정리하도록 하였다. system call 이란? 운영체제에서 커널 모드와 유저 모드로 나뉘게 되는데 유저 단에서
rninche01.tistory.com
'💻 Computer > 🦖 Assembly' 카테고리의 다른 글
[Assembly] 반복문 (2) | 2022.09.22 |
---|