Motorola 68000模拟器ADD.b指令(d8,AX,Xn)寻址测试问题
Motorola 68000模拟器
ADD.b指令寻址问题 开发Motorola 68000模拟器时,卡在了首个使用(d8, AX, Xn)寻址模式的ADD.b指令测试上。无法手动计算出内存地址13367077的由来——虽然确定该地址经过24位掩码处理,但推导不出未掩码的原始值。根据第二个预取值15214的第8位可知需要处理全扩展字,但其I/IS位属于保留组合,按索引尺寸读取长字后相加仍无法得到目标地址。
以下为测试用例的初始、终态寄存器与内存数据:
d133 [ADD.b D0, (d8, A3, Xn)] 1 Len = 18 ==== Initial ==== D0 = 2308435391 0x8997edbf 0b10001001 10010111 11101101 10111111 D1 = 1060694383 0x3f38e96f 0b00111111 00111000 11101001 01101111 D2 = 144798559 0x8a1735f 0b00001000 10100001 01110011 01011111 D3 = 1114670029 0x427083cd 0b01000010 01110000 10000011 11001101 D4 = 3546817942 0xd3682596 0b11010011 01101000 00100101 10010110 D5 = 3017016069 0xb3d40305 0b10110011 11010100 00000011 00000101 D6 = 157945861 0x96a1005 0b00001001 01101010 00010000 00000101 D7 = 3531664314 0xd280ebba 0b11010010 10000000 11101011 10111010 A0 = 1707790453 0x65cad075 0b01100101 11001010 11010000 01110101 A1 = 3858677903 0xe5fec08f 0b11100101 11111110 11000000 10001111 A2 = 3797006336 0xe251b800 0b11100010 01010001 10111000 00000000 A3 = 2874897130 0xab5b72ea 0b10101011 01011011 01110010 11101010 A4 = 3126142618 0xba55269a 0b10111010 01010101 00100110 10011010 A5 = 271034980 0x1027aa64 0b00010000 00100111 10101010 01100100 A6 = 2663102061 0x9ebbb66d 0b10011110 10111011 10110110 01101101 SSP = 2048 0x800 0b00000000000000000000100000000000 USP = 2048 0x800 0b00000000000000000000100000000000 PC = 3072 0xc00 0b00000000000000000000110000000000 SR = 9993 0x2709 0b00000000000000000010011100001001 Prefetch: 53555, 15214 0x3B6E 0b00111011 01101110 [MEMORY] 3079 = 160 A0 41206 3078 = 246 F6 13367077 = 228 E4 3077 = 181 B5 3076 = 237 ED 46573 87779 175558
==== Final ==== D0 = 2308435391 0x8997edbf 0b10001001 10010111 11101101 10111111 D1 = 1060694383 0x3f38e96f 0b00111111 00111000 11101001 01101111 D2 = 144798559 0x8a1735f 0b00001000 10100001 01110011 01011111 D3 = 1114670029 0x427083cd 0b01000010 01110000 10000011 11001101 D4 = 3546817942 0xd3682596 0b11010011 01101000 00100101 10010110 D5 = 3017016069 0xb3d40305 0b10110011 11010100 00000011 00000101 D6 = 157945861 0x96a1005 0b00001001 01101010 00010000 00000101 D7 = 3531664314 0xd280ebba 0b11010010 10000000 11101011 10111010 A0 = 1707790453 0x65cad075 0b01100101 11001010 11010000 01110101 A1 = 3858677903 0xe5fec08f 0b11100101 11111110 11000000 10001111 A2 = 3797006336 0xe251b800 0b11100010 01010001 10111000 00000000 A3 = 2874897130 0xab5b72ea 0b10101011 01011011 01110010 11101010 A4 = 3126142618 0xba55269a 0b10111010 01010101 00100110 10011010 A5 = 271034980 0x1027aa64 0b00010000 00100111 10101010 01100100 A6 = 2663102061 0x9ebbb66d 0b10011110 10111011 10110110 01101101 SSP = 2048 0x800 0b00000000000000000000100000000000 USP = 2048 0x800 0b00000000000000000000100000000000 PC = 3076 0xc04 0b00000000000000000000110000000100 SR = 10009 0x2719 0b00000000000000000010011100011001 Prefetch: 60853, 63136 [MEMORY] 3079 = 160 3078 = 246 13367077 [0xCBF725] = 163 3077 = 181 3076 = 237
测试用例来自ProcessorTests项目的680x0/68000/v1测试集。
内容的提问来源于stack exchange,提问作者Javid
相关产品推荐
相关产品推荐

