段
在一个可执行文件中,至少有一个.text段来存放代码,.data段来存放数据。
灵犀指令集汇编器中部分段的段名是不能改变的,这些段有固定的属性。
| 段名 | 属性 |
|---|---|
| .text | 可执行代码段 |
| .data | 可读可写数据段 |
| .rodata | 只读数据段 |
| .bss | 未初始化的static数据 |
灵犀指令集的块指令包含块头和可选的微指令两部分。块头和微指令的段放在什么段将直接影最终生成的二进制文件中块头和微指令的位置。一个汇编文件中,放在同一个段的内容,在最终生成二进制中摆放位置连续。
在一个a.s中, 将块头放在text段,将body放在.text.body段,在最终生成的二进制文件中,块头1和块头2在空间上连续摆放,微指令2和微指令1连续摆放。
在一个a.s中, 将块头放在text段,将body放在.text.body段,在最终生成的二进制文件中,块头1,块头2,块头3在空间上连续摆放,微指令1,微指令2,微指令3连续摆放。
.text
块头1
块头2
.pushSection .text.body
微指令1
微指令2
.popSection
块头3
.pushSection .text.body
微指令3
.popSection
如果a.s中的段位下面的形式,将块头和body都放在.text段,在最终生成的二进制文件中,摆放的顺序变为块头1,微指令2,块头2, 微指令1。
关于不同的汇编文件中同名的段,或者不同名的段而引发的段在二进制文件摆放位置不同的问题以及灵犀指令集块头的对齐问题,请见后面章节。