From f8e27209ad22c43f7ea366fe062d5fb792d863c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E4=BD=B3=E5=87=AF?= Date: Sat, 28 Sep 2024 16:30:44 +0800 Subject: [PATCH] =?UTF-8?q?classification=20of=20isa=20=E6=AF=94=E8=BE=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 24-Q4/00_ClassificationofISA.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/24-Q4/00_ClassificationofISA.md b/24-Q4/00_ClassificationofISA.md index 2c28179..72bc27a 100644 --- a/24-Q4/00_ClassificationofISA.md +++ b/24-Q4/00_ClassificationofISA.md @@ -59,7 +59,14 @@ D = A - C B = D + A ``` -| | | | | | -| - | - | - | - | - | -| | | | | | -| | | | | | +注:假设,操作码占用8位,内存地址和操作数都是16位,寄存器型ISA有16个通用寄存器 + +| | 堆栈型 | 累加器型 | 寄存器-存储器型 | 寄存器-寄存器型 | +| :--------------------------: | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| **汇编代码** | PUSH B
PUSH C
SUB
POP A
PUSH A
PUSH C
SUB
POP D
PUSH D
PUSH A
ADD 
POP B | LOAD C
NEG
ADD B
STORE A
LOAD C
NEG
ADD A
STORE D
ADD A
STORE B | LOAD R1, B
SUB R1, C
STORE R1, A
SUB R1, C
STORE R1, D
ADD R1, A
STORE R1, B | LOAD R1, B
LOAD R2, C
SUB R3, R1, R2
STORE R3, A
SUB R4, R3, R2
STORE R4, D
ADD R5, R4, R3
STORE R5, B | +| **代码量** | 12·1+9·2=30 | 10·1+8·2=**26** | 7·1+7·2+7·1=28 | 8·1+5·2+5·1+3·2=29 | +| **与内存交换的数据量** | 30+9·2=48 | 26+8·2=42 | 28+7·2=42 | 29+5·2=**39** | + +结论:在代码量方面,累加器型ISA更优;在与内存交换的数据量方面,寄存器-寄存器型ISA更优 + +补充:因为指令必须是byte的整数倍。所以LOAD R1, B中的R1要占8bit;ADD R5, R4, R3中的R5和R4占8bit,R3占8bit