MIPS .data 段到机器代码

MIPS .data Segment to Machine Code

我必须将以下代码从 .data 段转换为机器代码,但我不确定这是如何完成的。

value: .word  -39

我了解 .asciiz 变量的过程,但我找不到任何关于 .word 变量到机器代码的信息。

此外,处理器 assemble 是先处理 .data 段还是 .text 段?我会认为 .data 从它在书面代码中的第一个开始,但我只是想确定一下。 (我必须将十六进制地址按顺序关联到它们各自的机器码,我假设这将是第一个机器码。)

.word 告诉汇编器

  • 下面表达式列表的大小(通常.word是两个字节,即16位)
  • 字节顺序(高地址或低地址中的最高有效字节)

两者都取决于您要组装的目标机器

对于负数 - 正如建议的那样 - 通常使用 2 的补码,因此字节 -39 将转换为 0xD90b11011001.

正如您声明的常量 .word,-39 存储为 16 位值,即 0xFFD9.

value: .word -39

因此也可以将 "more machine coded" 声明为

value: .byte 0xD9, 0xFF ; little endian architecture - LSB(yte) at lower address

value: .byte 0xFF, 0xD9 ; big endian architecture - LSB(yte) at higher address

with .byte 总是从低地址到高地址填满内存。