我有这样一段代码,它使用syscall将十进制转换为二进制:
.text main: li $v0, 35 li $a0, 3 syscall
字符串它将3转换为二进制。这是输出:
00000000000000000000000000000011
型这是打印Hex:
0x00000003
型但是我想截断二进制和十六进制的前导零。有什么想法吗?我还想从十六进制中删除'x'
qyyhg6bp1#
简而言之,没有办法使用MARS/QtSpim系统调用来进行这种格式化。我很惊讶我们没有一个标准答案!MARS环境似乎被设计为允许简单的编程,但它还远未完成,而且实际上是不可定制的,因此您需要编写代码来完成这样的事情。在另一个环境中,我们可以将打印Map到一个字符串(或一个文件)进行后期处理,比如删除前导零,但这里不行。这些打印函数只会进入控制台,所以没有办法捕获它们的输出并重新处理。在另一个环境中,我们会有通用的格式化功能,比如printf,但这里没有。这些模拟器也没有标准库,所以我们只能得到系统调用。这些模拟器没有理由做更多的事情,因为它们的目标是教学。
printf
1条答案
按热度按时间qyyhg6bp1#
简而言之,没有办法使用MARS/QtSpim系统调用来进行这种格式化。
我很惊讶我们没有一个标准答案!
MARS环境似乎被设计为允许简单的编程,但它还远未完成,而且实际上是不可定制的,因此您需要编写代码来完成这样的事情。
在另一个环境中,我们可以将打印Map到一个字符串(或一个文件)进行后期处理,比如删除前导零,但这里不行。这些打印函数只会进入控制台,所以没有办法捕获它们的输出并重新处理。
在另一个环境中,我们会有通用的格式化功能,比如
printf
,但这里没有。这些模拟器也没有标准库,所以我们只能得到系统调用。这些模拟器没有理由做更多的事情,因为它们的目标是教学。