새소식

💻 Computer/🦖 Assembly

[Assembly] Hello world 출력

  • -
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
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.