Arrays 在运行时确定MIPS.data int数组长度

Arrays 在运行时确定MIPS.data int数组长度,arrays,mips,mars-simulator,Arrays,Mips,Mars Simulator,假设:在MIPS中,使用MARS,在部分定义一个“整数”数组 .data # Some array of integers intArray: .word 1, 2, 3, 4 问题:此数据可以更改,但指令需要保持不变。此数组需要解析通过。无法定义“长度变量” 例如,可以将数组更改为1、2、3、4、5、6、7、8、9,或1,或1、2,等等。其他内容不会更改。.text部分必须适应不来自用户输入的可变长度数组 想法:使用字符数组(字符串),这将很容易,因为它们以null结尾。只需解析,

假设:在MIPS中,使用MARS,在
部分定义一个“整数”数组

.data

# Some array of integers
intArray:   .word   1, 2, 3, 4
问题:此数据可以更改,但指令需要保持不变。此数组需要解析通过。无法定义“长度变量”

例如,可以将数组更改为
1、2、3、4、5、6、7、8、9
,或
1
,或
1、2
,等等。其他内容不会更改。
.text
部分必须适应不来自用户输入的可变长度数组

想法:使用字符数组(字符串),这将很容易,因为它们以null结尾。只需解析,直到找到所述字符!然而,就我所知,整数数组没有任何终止序列。如果从用户处读取,也很容易,但该数组将被硬编码。我想知道是否有某种模糊的方法(或者我完全错过的方法)来检索数组持有或分配了多少内存,或者是否有其他巧妙的方法来解决这个问题


我已经在互联网上搜索了这么多,但这似乎是一个不寻常的,不切实际的案例,所以还没有得到解决。如果我错过了什么,我向你道歉。提前谢谢

如果您知道整数数组中不能出现一个整数(例如,-1),则可以使用标记(就像ASCIIZ字符串空字符一样)。另一种方法是将数据拆分为长度字段和实际数组(我认为当你说“无长度变量”时禁止使用),你可以在数组后放置另一个标签,这将告诉你数组的结束位置。你可以从一个标签中减去另一个标签,这将以字节计数的形式给出数组的大小——然后除以4或右移2得到项计数。一些汇编程序允许在汇编时将公式作为一条指令中的立即数使用,因为结果是一个运行时常量。但是很多汇编程序没有这种表达式求值,因此,您必须在运行时使用一些指令执行减法和除法/移位。@RaymondChen这将更改
.text
部分,因为您必须重新编译源代码以考虑标签address@gusbro当然,重新编译源代码在范围内,在更改
intArray:.word…
语句后,您还必须重新编译到源代码。