YYYEJI

[CS] Addressing Modes 본문

Computer architectures

[CS] Addressing Modes

YEJI ⍢ 2022. 9. 21. 14:15
728x90

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를 이해했는지 확인해보세요! ↓↓↓

https://yyyeji.tistory.com/89

 

[CS] Exercise for Addressing Modes

Addreesing mode에 대해서 먼저 공부를 하고 문제를 풀어보세요! https://yyyeji.tistory.com/88 [CS] Addressing Modes Addressing mode 란 ? ? ? Operand가 memory 또는 register에 위치하는 주소를 지정하는..

yyyeji.tistory.com

 

 

 

 

◡̈

 

 

 

'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