MIPS .data 段到机器代码
MIPS .data Segment to Machine Code
我必须将以下代码从 .data 段转换为机器代码,但我不确定这是如何完成的。
value: .word -39
我了解 .asciiz 变量的过程,但我找不到任何关于 .word 变量到机器代码的信息。
此外,处理器 assemble 是先处理 .data 段还是 .text 段?我会认为 .data 从它在书面代码中的第一个开始,但我只是想确定一下。 (我必须将十六进制地址按顺序关联到它们各自的机器码,我假设这将是第一个机器码。)
.word
告诉汇编器
- 下面表达式列表的大小(通常
.word
是两个字节,即16位)
- 字节顺序(高地址或低地址中的最高有效字节)
两者都取决于您要组装的目标机器
对于负数 - 正如建议的那样 - 通常使用 2 的补码,因此字节 -39 将转换为 0xD9
或 0b11011001
.
正如您声明的常量 .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
总是从低地址到高地址填满内存。
我必须将以下代码从 .data 段转换为机器代码,但我不确定这是如何完成的。
value: .word -39
我了解 .asciiz 变量的过程,但我找不到任何关于 .word 变量到机器代码的信息。
此外,处理器 assemble 是先处理 .data 段还是 .text 段?我会认为 .data 从它在书面代码中的第一个开始,但我只是想确定一下。 (我必须将十六进制地址按顺序关联到它们各自的机器码,我假设这将是第一个机器码。)
.word
告诉汇编器
- 下面表达式列表的大小(通常
.word
是两个字节,即16位) - 字节顺序(高地址或低地址中的最高有效字节)
两者都取决于您要组装的目标机器
对于负数 - 正如建议的那样 - 通常使用 2 的补码,因此字节 -39 将转换为 0xD9
或 0b11011001
.
正如您声明的常量 .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
总是从低地址到高地址填满内存。