针对Lx5280 GUN 模拟器的正确性测试
2012-08-23夏兴昇
夏兴昇
(江苏经贸职业技术学院 江苏 南京 211168)
在移植之后产生的针对Lx5280的模拟器是否符合需求,我采用联合测试的方法,和汇编器as、调试器insight(gdb窗口形式)共同测试。综合考虑对新增寄存器和对新增指令的测试,由于添加的寄存器和指令结合紧密,我采用对Lx5280各个新增功能分模块测试。
被测指令程序的装载,我通过两种方式:
(1)通过汇编程序汇编指令后通过insight装入。
(2)在Lx5280汇编没有移植好前通过手动汇编方式。在insight寄存器窗口给寄存器赋值及指令memory窗口在当前指令地址处写入手动汇编指令的的机器指令码。这种方式也适用于在汇编、调试、模拟器联合调试时确认错误范围。同时可以增加测试的灵活性。
采用单步测试方法,测试结果通过insight寄存器窗口和memory窗口观察。
详细测试如下:
1 对Circular Buffers功能的测试
这里涉及cbs[0-2]、cbe[0-2]六个寄存器,涉及指令有LBP[.Cn]、LBPU[.Cn]、LHP[.Cn]、 LHPU[.Cn]、 LWP[.Cn]、 LTP[.Cn]、 SBP[.Cn]、SHP[.Cn]、 SWP[.Cn]、STP[.Cn]
指令格式:×××[.Cn]rT,(pointer)stride
如lbp.1 $5,($10)1
基本功能是:对point寄存器间接寻址后赋值给rT寄存器,即rT=[point]。同时对point寄存器加上stride,即point+=stride。Cn值为0-2,决定采用三个Circular Buffers中那一个,0可省略。
测试步骤:
(1)测试 cbs[0-2]、cbe[0-2]赋值,如对 cbs0 赋值
li $2,0xbfc00384
mtru $2,cbs0
通过insight寄存器窗口观察,观察赋值是否正确。
(2)测试存取字长正确性,如以下指令

(3)测试有符号和无符号扩展存取操作
在取字节和半字操作中,会把它们扩展到32位存入通用寄存器。这里有带符号扩展和无符号扩展。
首先通过memory窗口对($10)赋值0xff

(4)测试 point的自加,即 point+=stride


执行后由于上溢发生,$10被赋值0xbfc00384,实现了存取数据buffer循环功能。
2 对Zero Overhead Loop功能的测试
这里涉及lpc0、lps0、lpe0三个寄存器,无相关新增指令。
基本功能:当PC值和LPE0匹配时,且LPC0不等于0,则PC被赋值为LPS0,同时LPC0减1,用硬件实现了的程序循环功能。……
