70 likes | 381 Views
명령어 형식. 명령어 코드의 필드 (field) 연산코드 필드 : 수행할 연산을 명시 주소 필드 : 메모리의 주소나 레지스터를 지정 모드 필드 : 피연산자나 유효 주소가 결정되는 방법 표시 CPU 구조의 세가지 형식 단일 누산기 구조 범용 레지스터 구조 스택 구조. 3- 주소의 명령어. 주소필드가 레지스터 또는 메모리 주소 지정 X = (A+B)*(C+D) 계산 어셈블리어 ADD R1,A,B R1 ← M[A] + M[B] ADD R2,C,D R2 ← M[C] + M[D]
E N D
명령어 형식 • 명령어 코드의 필드(field) • 연산코드 필드: 수행할 연산을 명시 • 주소 필드: 메모리의 주소나 레지스터를 지정 • 모드 필드: 피연산자나 유효 주소가 결정되는 방법 표시 • CPU 구조의 세가지 형식 • 단일 누산기 구조 • 범용 레지스터 구조 • 스택 구조
3-주소의 명령어 • 주소필드가 레지스터 또는 메모리 주소 지정 • X = (A+B)*(C+D) 계산 어셈블리어 • ADDR1,A,BR1 ← M[A] + M[B] • ADDR2,C,DR2 ← M[C] + M[D] • MULX,R1,R2 M[X] ← R1 * R2 • 장점: 수식 계산에서 짧은 길이의 프로그램 • 단점: 2진 코드 명령어 표현에 많은 비트가 필요 • 사용 예) • CYBER 170 기종 - 2개의 레지스터와 하나의 메모리 주소 표현
2-주소의 명령어 • 실제로 가장 많이 사용되는 방식 • 주소필드가 레지스터 또는 메모리 주소 지정 • X = (A+B)*(C+D) 계산 어셈블리어 • MOVR1,AR1 ← M[A] • ADDR1,B R1 ← R1 + M[B] • MOVR2,CR2 ← M[C] • ADDR2,DR2 ← R2 + M[D] • MULR1,R2 R1 ← R1 * R2 • MOVX,R1 M[X] ← R1
1-주소의 명령어 • 누산기(AC)에 의한 모든 데이타의 처리 • 곱셈이나 나눗셈을 할때는 또 다른 레지스터가 하나 필요 • X = (A+B)*(C+D) 계산 어셈블리어 • LOADA AC ← M[A] • ADDB AC ← AC + M[A] • STORET M[T] ← AC • LOADC AC ← M[C] • ADDD AC ← AC + M[D] • MULT AC ← AC * M[T] • STOREX M[X] ← AC
무주소의 명령어 • 연산 명령어에서 주소 필드가 없다 • 스택 구조의 컴퓨터 • X = (A+B)*(C+D) 계산 어셈블리어 • PUSHA TOS ← A • PUSHBTOS ← B • ADD TOS ← (A + B) • PUSHC TOS ← C • PUSHD TOS ← D • ADD TOS ← (C + D) • MUL TOS ← (C + D)*(A + B) • POPX M[X] ← TOS
RISC 명령 • RISC 프로세서의 명령어 집합 • 메모리와 CPU사이의 통신을 할 때 • LOAD와 STORE 명령만 사용하도록 제한 • 다른 명령어들의 수행은 메모리 참조없이 • CPU의 레지스터 안에서 수행 • X = (A+B)*(C+D) 계산 어셈블리어 • LOADR1,AR1 ← M[A] • LOADR2,BR1 ← M[B] • LOADR3,CR1 ← M[C] • LOADR4,DR1 ← M[D] • ADDR1,R1,R2R1 ← R1 + R2 • ADDR3,R3,R2R3 ← R3 + R4 • MULR1,R1,R3R1 ← R1 * R3 • STOREX,R1M[X] ← R1