计算机组织与结构 (22).pdf
操作数类型 操作数类型 地址:有时地址也需要计算,此时地址也是数据 数字:定点数、浮点数、十进制数。字符:ASCII码。逻辑数据:每一位都代表真(1)或假(0)的布尔类型数据,这种数字串即为逻辑数。数据存储方式 两种字节序:小端 vs 大端 对齐方式:为了便于硬件实现,同时提高机器运行速度,通常要求多字节数据在存储器中满足“边界对齐”的要求。即,字节数据可以任意存放;半字存放在偶数地址;字存放在末两位地址为0处;双字存放在末三位地址为0处。边界对齐地址(十进制)半字(地址22)半字(地址18)双字双字(地址32)双字双字(地址24)半字(地址20)半字(地址16)字节(地址 8)字节(地址 9)字节(地址10)字节(地址11)字(地址 4)字(地址 0)字节(地址14)字节(地址15)字节(地址13)字节(地址12)边界对齐(32)位机 0 4812162024283236边界末对齐举例地址(十进制)048字节(地址7)字节(地址6)字(地址2)半字(地址10)半字(地址8)半字(地址0)字(地址4)边界未对齐048字节(地址7)字节(地址6)半字(地址10)半字(地址8)半字(地址0)字(地址4)字节(地址3)字节(地址2)边界末对齐的恶果(ARM)int readint(_packed int*data)return*data;readint BIC r3,r0,#3 ;r3=data&0 xFFFFFFFC AND r0,r0,#3 ;r0=data&0 x00000003 MOV r0,r0,LSL#3 ;r0=bit offset of data word LDMIA r3,r3,r12 ;r3,r12=8 bytes read from r3 MOV r3,r3,LSR r0 ;These three instructions RSB r0,r0,#0 x20 ;shift the 64 bit value r12.r3 ORR r0,r3,r12,LSL r0 ;right by r0 bits MOV pc,r14 ;return r0子程序调用程序主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2子程序调用程序.主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2子程序调用程序CALL SUB1.主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2子程序调用程序CALL SUB1.主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2子程序调用程序CALL SUB1.主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2子程序调用程序CALL SUB1.CALL SUB2主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2子程序调用程序CALL SUB1.CALL SUB2主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2子程序调用程序CALL SUB1.CALL SUB2主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2RETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2RETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2.RETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2.CALL SUB2RETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2.CALL SUB2RETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2.CALL SUB2RETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2.CALL SUB2RETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2.CALL SUB2RETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2.CALL SUB2RETURNRETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2.CALL SUB2RETURNRETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.子程序调用程序CALL SUB1.CALL SUB2.CALL SUB2RETURNRETURN主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2.