【问题标题】:Leave padding between strings in the segment在段中的字符串之间保留填充
【发布时间】:2016-07-16 16:32:05
【问题描述】:

我正在使用 mars 4.5 来模拟 mips32。 我想要做的是保存字符串(.asciiz)不是一个与另一个相邻的字符串,而是将它们保存在内存的单独位置。仍然彼此靠近,但有间隙。

例如:

.data 
string_1: .asciiz  "\nHello, world"
string_2: .asciiz "\n...assembly....\n"

在我的例子中,string_1 自动保存在数据段的地址 0x10010000。

例如,我希望 string_2 位于像 0x10010080 这样的地址,而不是紧跟在 string1 之后。

我可以编辑数据段地址吗?

【问题讨论】:

  • 感谢彼得的更正,对不起我的英语。

标签: assembly mips32 mars-simulator


【解决方案1】:

这看起来像 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 个字节的零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2015-12-15
    • 1970-01-01
    相关资源
    最近更新 更多