저수준의 프로그래밍 언어
section .data
message db "Hello, world!", 10 ; 아스키코드로 10은 LF(라인피드)
section .text
global _main
_main:
mov rax, 0x2000004 ; 시스템콜 함수를 write로 변경
;아래 코드는 write(1, message, 14)와 같다고 볼 수 있다.
mov rdi, 1 ; fd를 표준 출력인 1로 변경
mov rsi, message ; rsi는 출력할 주소에 해당
mov rdx, 14 ; 출력할 크기를 14로 변경
syscall ; 시스템콜(write) 호출
mov rax, 0x2000001 ; 시스템콜 함수를 exit로 변경
syscall ; 시스템콜(exit) 호출
실행방법
위 코드를 asm.s로 저장
nasm -f macho64 asm.s (컴파일)
ld -lSystem asm.o (링킹 과정)
./a.out (실행)
컴퓨터는 2진수로 정보 처리를 하며 0과 1을 표시할 수 있는 2진수 한자리는 1bit이다.
메모리는 데이터를 저장하기 위한 장치로, 기본 단위가 1byte이며 1byte는 8bit로 이루어져 있다.
1nibble = 4bit | 1byte = 2nibble(8bit) | word = 2byte | double word = 4byte
quad word = 8byte | paragraph = 16byte
레지스터는 CPU(중앙연산장치)내의 작은 저장영역이다.
명령은 레지스터에 있는 데이터를 요구하여 계산이 이루어지게 된다.