Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly “溢出”;addi";MIPS说明-示例_Assembly_Mips_Inline Assembly_Bluespec - Fatal编程技术网

Assembly “溢出”;addi";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指令会导致溢出异常。我目前正在使用Bluespec HDL模拟导致异常的处理器,并适当地处理它们

无论如何,我正在编写一些测试用例来触发溢出异常,特别是使用MIPS的addi命令

注意:我正在测试的处理器是基于SMIPS的,但我支持一些MIPS指令,用于特定的异常和中断

我知道我检测溢出的逻辑是正确的(伪代码如下):

这并不是抛出异常。如果我试试这个:

 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