어셈블리 명령어 정리

현재·2023년 12월 24일
0

sys

목록 보기
6/9

기계어는 0과 1로 이루어져 있있다.
이를 사람이 이해하는 것은 어려운 일이었습니다.
David Wheeler어셈블리 언어어셈블러를 고안하여 이 문제를 해결했습니다. 어셈블리 언어는 사람이 이해하기 쉬운 형태로 작성된 프로그래밍 언어이며, 어셈블러는 이를 기계어로 변환해주는 도구입니다.

어셈블리 언어

어셈블리 언어는 컴퓨터의 기계어와 치환되는 언어입니다. 이는 기계어가 여러 종류라면 어셈블리어도 여러 종류여야 함을 의미합니다.
각 아키텍처마다 해당하는 어셈블리어가 존재합니다. 이로써 x86, x86-64, ARM, MIPS 등의 다양한 ISA에 대응하는 어셈블리어가 존재합니다.

인텔 x64 명령어

데이터 이동(Data Transfer)
mov 값 대입,
lea 주소 대입


산술 연산(Arithmetic)
inc 1 더함
dec 1 뺌,
add 더하기,
sub 빼기


논리 연산(Logical)
and, or, xor, not


비교(Comparison)
cmp, test


분기(Branch)
jmp 그냥 이동,
je 값이 같으면 이동,
jg 값이 크면 이동


스택(Stack)
push 최상단에 쌓기,
pop 최상단에 값을 넣고 더하기


프로시져(Procedure)
call 호출,
ret 호출자의 실행 흐름으로 돌아가기,
leave 스택 프레임 정리


시스템 콜(System call)
syscall 커널에게 필요한 동작 요청

profile
개발자

0개의 댓글