Assembly “溢出”;addi";MIPS说明-示例
我意识到,addi指令会导致溢出异常。我目前正在使用Bluespec HDL模拟导致异常的处理器,并适当地处理它们 无论如何,我正在编写一些测试用例来触发溢出异常,特别是使用MIPS的addi命令 注意:我正在测试的处理器是基于SMIPS的,但我支持一些MIPS指令,用于特定的异常和中断 我知道我检测溢出的逻辑是正确的(伪代码如下): 这并不是抛出异常。如果我试试这个:Assembly “溢出”;addi";MIPS说明-示例,assembly,mips,inline-assembly,bluespec,Assembly,Mips,Inline Assembly,Bluespec,我意识到,addi指令会导致溢出异常。我目前正在使用Bluespec HDL模拟导致异常的处理器,并适当地处理它们 无论如何,我正在编写一些测试用例来触发溢出异常,特别是使用MIPS的addi命令 注意:我正在测试的处理器是基于SMIPS的,但我支持一些MIPS指令,用于特定的异常和中断 我知道我检测溢出的逻辑是正确的(伪代码如下): 这并不是抛出异常。如果我试试这个: addi $2, $0, 0x7fffffff addi $3, $2, 0x0000000f 我得到一个汇编错误,因为
addi $2, $0, 0x7fffffff
addi $3, $2, 0x0000000f
我得到一个汇编错误,因为立即数必须是16位。我怎样才能从安迪那里得到满额的钱?你能给我举个好例子吗。。。我是否需要使用其他指令来填充高位
谢谢您的第一个序列不会导致溢出异常,因为寄存器是32位的。32767+15=32782,在32位以内 在MIPS中,不能在一条指令中加载大的即时数据。首先使用LUI指令在中加载前16位,然后在下16位加载ADDI(或ORI,或XORI)
你也可以从内存中输入一个32位的值。我对汇编不是很熟悉,所以你能举个例子吗。ThanksI不明白如何使用HDL,如何模拟处理器,如何编写实现溢出检测的代码,但你无法理解汇编指令。我是测试处理器架构项目的一部分。Bluespec是一种非常高级的思维方式,您只定义规则来流水线处理处理器,而不需要了解程序集细节。不管我前面的问题是什么,我明白你的意思。而且,这是对课程的支持。我早些时候上过这门课,现在我正试图为与教授合作的处理器获取异常支持。本课程专注于bluespec和处理器设计,完全没有关于组装的介绍!谢谢你。我只是打开它来检查lui指令。
addi $2, $0, 0x7fff
addi $3, $2, 0x000f
addi $2, $0, 0x7fffffff
addi $3, $2, 0x0000000f