어셈블리어
1. Low Level Language
2. 메모리가 작고 빠른 속도로 컴퓨터에 명령할 수 있다.
3. 초소형 Embedded System에서 많이 사용된다.
기본 문법(AT&T / Intel)
- CSAPP 책에는 AT&T로 설명하고 있어 이 문법만 정리
1. Opcode와 Operand로 나뉜다.
1) Opcode : 명령어, 어떠한 행동을 할지 지시
2) Operand : 인자 값, 피 연산자. 즉 어디에 무엇을 해야 하는지 표기
예) ADD(더하라) Operand1(Source), Operand2(Destination)
Operand1 을 Operand2에 더하라
2. 숫자 표기(Constant Numver)
$1, $2, $3, $4.....
3. Memory Address
괄호를 씌움 : (EAX)...
4. Offset
인덱스 값 숫자로 표기 : 4(EAX) ...
5. Register
1) %EAX (Extended Accumulator Register) : 더하기 빼기 등, 연산에 사용
- 함수에서 return 된 값이 저장
2) %EDX (Extended Base Register) : 더하기 뺴기 등, 연산에 사용
- EAX와 다른 점은 return 에 저장 할 수 없음
3) %ECX (Extended Counter Register) : 반복문의 i 같은 역할
- 카운팅을 하지만 거꾸로 함
4) %EDX (Extended Data Register) : EAX, EDX 등이 사용하기 부족할 때 사용함
5) %ESI (Extended Source Index) : 데이터를 복사할 때 Source데이터 주소가 복사
6) %EDI (Extended Destination Index) : 데이터를 복사할 때 Destination 주소가 복사
>>>ESI 에서 가리키고 있는 주소에 있는 데이터가 EDI에 복사가 된다!
7) %ESP (Extended Stack Pointer) : Stack Frame의 끝 지점 주소가 저장
8) %EBP (Extended Base Pointer) : Stack Frame의 시작 지점 주소가 저장
6. Register 크기
1) ax, bx, cx, dx ....
- 16bit
2) EAX, EBX, ECX...
- 32bit
3) RAX, RBX, RCX...
- 64bit
7. Opcode 명령어 (매우 많지만 많이 쓰는 몇 가지)
1) PUSH, POP : 스택에 넣고 빼는 것
2) MOV : 값을 넣는 것
3) LEA : 주소를 넣는 것
4) ADD, SUB : 더하기, 빼기
5) INC, DEC : ++ , --
6) CMP : 두 오퍼랜드를 비교하는 명령어
7) CALL : 함수를 호출하는 명령어
8) RET : 함수가 종료되고 함수 호출 다음으로 이동하라는 명령어
9) NOT : 아무것도 안 함
'Develop > Computer Systems & Network' 카테고리의 다른 글
[Architecture]VPN, VPC, VPS 정리 (0) | 2023.07.28 |
---|---|
사용중인 포트 죽이기 (0) | 2023.03.08 |
[CS}32/64bit 차이점 정리 (0) | 2023.02.23 |
CPU 간단 정리(그림) (0) | 2022.11.11 |