어셈블리어

·2023년 4월 6일
0

C++

목록 보기
2/5

📌어셈블리어 기초


SASM 어셈블리어 공부 위한 IDE(통합개발환경)

어셈블러(번역기)

우리가 적어놓은 코드를 기계어로 번역해준다(컴파일러랑 같은건데 어셈블리어라서 어셈블러인듯?)

실행파일구조

.text
.data
대강 이렇게 되어있다

데이터기초

비트, 바이트

비트 : 0, 1
바이트 : 여덟개의 비트로 구성된 데이터의 양을 나타내는 단위

10진수

(0 1 2 3 4 5 6 7 8 9)
10 11 12 13 ... 19 20

2진수

(0 1)
0 1 10
0b0 0b1 0b10

16진수

(0 1 2 3 4 5 6 7 8 9 A B C D E F)
0x00
0b 1001 0101 = 0x95

비트 바이트 워드

8bit = 1byte
16bit = 2byte = 1word
32bit = 4byte = 2word = 1dword(double-word)
64bit = 8byte = 4word = 1qword(quad-word)


📌레지스터


CPU(ALU)
레지스터 : CPU 접근속도 굉장히 빠르지만 저장용량 한계있음
메인메모리 : 휘발성 메모리(컴꺼지면 사라짐)
하드디스크 : 비휘발성 메모리(컴꺼져도 데이터 남아있음)

ex)게임을 돌린다고 치면 하드디스크에서 메인메모리로 올리고 CPU에서 연산을 한다?

레지스터 rax
레지스터 가장 큰 크기 rax : 64bit

RAX, EAX, AX, AH, AL
RBX, EBX, BX, BH, BL
이런식으로 사용한다.

mov

오른쪽에서 왼쪽으로 데이터를 이동

1. cst(상수)를 reg1에 넣는다

move reg1, cst

2. reg2의 값을 reg1 복사한다.

move reg1, reg2

코드

move eax, 0x1234
move rbx, 0x12345678
move cl, oxff
mov al, 0x00

al(1byte)은 0x00을 넣으니까 상위비트에는 영향을 안끼친다.

mov rax, rdx

참고자료

Part1: C++ 프로그래밍 입문

profile
개인공부저장용(하루의 기록)

0개의 댓글