Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 사설 IP
- ALU
- 클린 코드
- Code complete
- physical address
- addressing mode
- 코드 컴플릿
- ack
- L3 Router
- Public IP
- Sector
- osi 7
- floating point
- 가독성
- Clean code
- MMU
- float
- TCP
- CPU
- network
- register
- private ip
- refactoring
- 공인 IP
- cache
- 리펙토링
- interrupt
- 명령어
- L2 switch
- page
Archives
- Today
- Total
Software Lab
1. 명령어 집합(Instruction set) 본문
명령어 집합은 CPU가 실행할 수 있는 기계 명령어 구조이다. 16bit CPU, 32bit CPU, 64bit CPU라고 할 때 앞의 bit 수는 그 CPU가 실행할 수 있는 기계 명령어 구조를 이루는 bit 수를 나타낸다. 아래 예시는 16bit CPU가 처리하는 16bit 명령어의 구조이다.
mode : 주소 지정 방식을 나타내는 값으로 즉시, 직접, 간접 등이 있다. instruct : add, load, and와 같은 연산을 나타낸다. address : 데이터가 위치한 주소를 나타낸다. |
아래는 16bit CPU에서 지원하는 명령어 테이블이다.
아래 코드는 C 또는 C++ 같은 언어로 작성한 것이다. 이것이 어떻게 명령어 집합으로 변환되는지 알아보자.
int a = 2000;
int b = 3000;
int c = a + b;
이것을 컴파일하게 되면 아래와 같이 CPU가 처리할 수 있는 기계어로 변환된다.
.data
0000 0011 1100 1000
0000 1011 1011 1000
.code
0000 0000 0011 0000
0001 0000 0011 0010
0001 1100 0011 0100
위 기계어는 해석하기 어려우므로 아래와 같이 어셈블리어로 변환해보자.
.data
2000
3000
.code
load [0x0030]
add [0x0032]
store [0x0034]
load [0x0030] : 0x0030 번지에 있는 데이터를 읽어 들인다. add [0x0032] : 0x0032 번지에 있는 데이터를 더한다. store [0x0034] : 0x0034 번지에 계산된 데이터를 저장한다. |
이렇게 컴파일을 거쳐 기계어로 변환하면 실행할 수 있는 프로그램이 된다. 그리고 프로그램을 실행하게 되면 메모리에 다음과 같이 올라가게 된다.
'컴퓨터 구조 > Instruction Set' 카테고리의 다른 글
6. CISC vs RISC (0) | 2022.08.12 |
---|---|
5. 주소 지정 방식(addressing mode) #2 (0) | 2022.08.11 |
4. 주소 지정 방식(addressing mode) #1 (0) | 2022.08.11 |
3. 명령어 처리 주기(Instruction cycle) #2 (0) | 2022.08.11 |
2. 명령어 처리 주기(Instruction cycle) #1 (0) | 2022.08.04 |
Comments