8.2目标机器 8.2.2指令的代价 ·指令代价简化为 1+指令的源和目的地址模式的附加代价
8.2 目 标 机 器 8.2.2 指令的代价 • 指令代价简化为 1 + 指令的源和目的地址模式的附加代价
8.2目标机器 ·地址模式和它们的汇编语言形式及附加代价 模式 形式 地址 附加代价 绝对地址 M M 寄存器 R R 0 变址 c(R) c contents(R) 1 间接寄存器*R contents(R) 0 间接变址 *c(R) contents(c+contents(R)) 直接量 #c
8.2 目 标 机 器 • 地址模式和它们的汇编语言形式及附加代价 模式 形式 地址 附加代价 绝对地址 M M 1 寄存器 R R 0 变址 c(R) c + contents(R) 1 间接寄存器 R contents(R) 0 间接变址 c(R) contents(c + contents(R)) 1 直接量 #c c 1
8.2目标机器 8.2.2指令的代价 ·指令代价简化为 1+指令的源和目的地址模式的附加代价 指令 代价 MOV RO,RI 1 MOV R5,M 2 ADD #1, R3 2 SUB4R0),*12R1)
8.2 目 标 机 器 8.2.2 指令的代价 • 指令代价简化为 1 + 指令的源和目的地址模式的附加代价 指令 代价 MOV R0,R1 1 MOV R5,M 2 ADD #1, R3 2 SUB 4(R0), 12(R1) 3
8.2目标机器 ·例a=b+c,a、b和c都静态分配内存单元 -可生成 MOV b,RO ADD C,RO 代价=6 MOV RO,a 一也可生成 MOV b,a ADD c,a 代价=6
8.2 目 标 机 器 • 例 a = b + c, a、b和c都静态分配内存单元 - 可生成 MOV b, R0 ADD c, R0 代价= 6 MOV R0, a - 也可生成 MOV b, a ADD c, a 代价= 6
8.2目标机器 ·例a=b+c, a、b和c都静态分配内存单元 -若R0,R1和R2分别含a,b和c的地址,则 可生成 MOV *R1,*RO ADD *R2.*R0 代价=2 -若R1和R2分别含b和c的值,并且b的值在 这个赋值后不再需要,则可生成 ADD R2,R1 MOV RI,a 代价=3
8.2 目 标 机 器 • 例 a = b + c, a、b和c都静态分配内存单元 - 若R0,R1和R2分别含a,b和c的地址,则 可生成 MOV R1, R0 ADD R2, R0 代价= 2 - 若R1和R2分别含b和c的值,并且b的值在 这个赋值后不再需要,则可生成 ADD R2, R1 MOV R1, a 代价= 3