我使用火星4.5来模拟mips32。 我想要做的是保存字符串(.asciiz)而不是与另一个连续的字符串,而是将它们保存在内存的不同位置。仍然彼此靠近,但有差距。
例如:
.data
string_1: .asciiz "\nHello, world"
string_2: .asciiz "\n...assembly....\n"
在我的情况下,string_1
会自动保存在数据段的地址0x10010000处。
我希望string_2
位于0x10010080之类的地址,而不是string1
之后的地址。
我可以编辑数据段地址吗?
答案 0 :(得分:0)
这看起来像GNU作为语法,所以我假设MARS只使用气体。
使用the .org
directive将当前输出位置增加到给定的绝对值。 (阅读手册以确保您理解其中的限制,例如仅在一个部分内,并且您不能倒退。)
.data
string_1: .asciiz "\nHello, world"
.org 0x10010080 # fill with zeros until this address
string_2: .asciiz "\n...assembly....\n"
另请注意,如果您不打算写字符串常量,通常应将它们放在.rodata
中。
更常见的是只需要对齐某些2次幂边界; use .p2align
为此。
如果要使用固定数量的字节进行填充,请使用.zero size
。例如.zero 1234
汇编为1234个字节的零。