【发布时间】:2019-06-02 18:40:14
【问题描述】:
我们必须扩展我们的代码。有了这些操作。
Ziel= 目标寄存器
在第 14 行我收到错误:第 14 行第 2 列:不允许扩展(伪)指令或格式。请参阅设置。
当我评论第 14 行时。(#not $9, $9) 我收到此错误 第 27 行:0x00400064 处的运行时异常:算术溢出 Go:执行因错误而终止。
#code from previous question
1 .text
2 addi $8, $0, 1
3 addi $9, $0, 11
4 addi $10, $0, 0x1000
5 addi $11, $0, -1
6 addi $12, $0, -0x8000
7 addi $13, $0, 0x8000
8 addi $14, $0, 0xffff0000
9 addi $15, $0, 0x7fffffff
10 addi $24, $0, 5322
11 addi $25, $0, 75
#code with operations
12 add $2, $10, $9
13 sub $3, $10, $9
14 not $9, $9
15 add $4, $9, $10
16 addi $4, $4, 1
17 sll $5, $13, 5
18 sra $6, $13, 5
19 sra $7, $12, 5
20 srl $16, $12, 5
21 srlv $17, $13, $9
22 div $24, $25
23 mflo $18
24 div $24, $25
25 mfhi $19
26 addiu $20, $15, 1
27 addi $21, $15, 1
28 clo $22, $11
29 clo $23, $14
【问题讨论】:
-
使用
addu避免溢出。目前还不清楚你想做什么,所以它可能不正确,但它会避免溢出。要模拟not,您可以从 -1 中减去。 -
指令
not是一个“伪指令”。这意味着这实际上不是一条指令,而是一条或两条指令的缩写。not $x,$y是nor $x,$y,$0的缩写。 -
我无法使用 addu。我收到错误消息扩展(伪)指令或格式不允许。请参阅设置。 i.stack.imgur.com/sWzCa.png这是我必须做的。
-
您必须将
addi $21, $15, 1替换为addiu $21, $15, 1 -
第 27 行将溢出。你的任务毫无意义。如果忽略溢出,则与上一行 26 相同。
标签: assembly mips sql-server-mars