일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- control
- computer
- DS
- github
- Class
- DoM
- php
- function
- architecture
- web
- mysql
- MIPS
- data structure
- MacOS
- for
- Algorithm
- system
- DATAPATH
- html
- XML
- Linux
- Pipelining
- instruction
- DB
- CSS
- javascript
- react
- Java
- python
- while
- Today
- Total
YYYEJI
[CS] Addressing Modes 본문
Addressing mode 란 ? ? ?
Operand가 memory 또는 register에 위치하는 주소를 지정하는 다양한 방법입니다.
→ 사용자에게 프로그래밍 다재다능성을 제공합니다.
(메모리에 대한 포인터, 루프 제어를 위한 카운터, 데이터 인덱싱과 같은 기능을 제공)
→ addressing filed의 비트 수를 줄일 수 있습니다.
Effective Address (E.A.)
→ Referenced operand를 담고있는 위치의 actual address 입니다.
EX) LDF r1, [r2, #20]
① Implied addressing mode
→ Explicit address가 없습니다.
Ex) instructions for accumulator and stack
RTS: Return From Subroutine
PUSH A
ADD A
PUSH A는 Stack에 넣으라는 말은 없지만 PUSH A 라는 instruction 자체를 통해 Stack에 A를 집어넣습니다.
ADD A는 AC에다가 A라는 값을 더해서 다시 AC에 보관하라는 뜻입니다.
✓ Word 자체에 의미가 함축
✓ 직관적으로 보이는 Addressing mode
② Immediate addressing mode
→ Operand field에 actual operand value를 보관합니다.
Ex) In ARM, ADD r3, r3, #4
여기서 #4는 momory 주소도 register 번호도 아닌 4라는 값 그 자체입니다.
즉, r3 값에 4를 더해서 r3에 넣으라는 뜻입니다.
③Register addressing mode
→ 선택된 register에 값을 보관합니다.
→ 이때 E.A.는 선택된 register입니다.
Ex) In ARM, ADD r0, r1, r2
r0 = r1 + r2
④ Register Indirect addressing mode
→ 선택된 register에 operand가 있는 주소를 보관합니다.
(데이터를 보관하는 것이 아닙니다.)
→ 이때 E.A.는 선택된 register의 값 입니다.
Ex) In Motorola 68000, MOVE.W (A1), D1
⑤ Direct Addressing mode
→ Effective address 는 instruction의 주소 부분과 동일하며 operand는 memory에 보관합니다.
→ 이때 E.A.는 instruction의 address field입니다.
(address field는 주소가 있는 곳 입니다.)
Ex) In Motorola 68000, MOVE.W 10000, D1
⑥ Indirect Addressing mode
→ Address field는 effective address 가 저장된 address를 제공합니다.
→ 이때 E.A.는 instructiond의 address field인 momory입니다.
Ex) In hypothetical machine, ADD(1000)
⑦ (PC) Relative Address mode
→ Effective address를 얻기 위해 address of instruction 부분에 pc의 값이 추가됩니다.
(branch type instructions)
→ 이때 E.A.는 PC와 Offset in address field of instruction입니다.
Ex) In MIIPS,
100 bne $s0, $s1, Exit
104 add
108 sub
112 lw
116 Exit
(bne - branch not equal, beq - banch equal)
E.A. = (PC) + Exit = 104 + 3*4 = 116
(104 - PC의 값, 3 - Exit 까지의 거리, 4 - 4씩 증가)
(즉, Exit은 PC에서 3으로 번역되는데,
Instruction이 3개여서 3이라고 생각해도 됩니다.)
(PC의 값이 100에서는 104입니다.)
⑧ Base Register Addressing mode
→ 기본 register의 값은 effective address를 얻기 위해 instruction의 주소 부분에 추가됩니다.
→ 이때 E.A.는 base register와 offset 안에 있는 instruction의 address field 입니다.
Ex) in MIPS, lw $t1, 1000($s1)
🅠) Direct vs Indirect
🅐 - Address field of indirect can be extended to word length compared to direct addressing
(Indirects는 direct보다 address에 더 많은 data를 보관할 수 있습니다.
그렇지만 메모리가 길어진다는 단점이 있을 수 있습니다.)
🅓 - Indirect needs two memory references → Multilevel of indirection
(CPU에서 momory까지 가는 시간이 오래 걸리기 때문에 direct보다 느립니다.)
Direct - memory에 한 번 접근
Indirect - memory에 두 번 접근
(Indirect가 더 느림)
🅠) Direct vs Register
🅐 - Register addressing mode is faster
(Register는 CPU 밖으로 나갈 필요가 없기 때문에 direct보다 빠릅니다.)
🅐 - Addressing space of memory is larger than register
(Direct의 주소 길이가 Register보다 더 깁니다.)
↓↓↓ Addressing Mode를 이해했는지 확인해보세요! ↓↓↓
◡̈
'Computer architectures' 카테고리의 다른 글
[CS] CISC vs RISC (0) | 2022.09.22 |
---|---|
[CS] Exercise for Addressing Modes (0) | 2022.09.22 |
[CS] Example for Operand (0) | 2022.09.19 |
[CS] Number of Operands (0) | 2022.09.19 |
[CS] Instruction 구성 (0) | 2022.09.19 |