在一个可执行文件中,至少有一个.text段来存放代码,.data段来存放数据。

灵犀指令集汇编器中部分段的段名是不能改变的,这些段有固定的属性。

段名 属性
.text 可执行代码段
.data 可读可写数据段
.rodata 只读数据段
.bss 未初始化的static数据

灵犀指令集的块指令包含块头和可选的微指令两部分。块头和微指令的段放在什么段将直接影最终生成的二进制文件中块头和微指令的位置。一个汇编文件中,放在同一个段的内容,在最终生成二进制中摆放位置连续。

在一个a.s中, 将块头放在text段,将body放在.text.body段,在最终生成的二进制文件中,块头1和块头2在空间上连续摆放,微指令2和微指令1连续摆放。

.text
  块头1
.pushSection    .text.body
  微指令2
.popSection
  块头2
.pushSection    .text.body
  微指令1
.popSection

在一个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。

.text
  块头1
  微指令2
  块头2
  微指令1
  ...
关于不同的汇编文件中同名的段,或者不同名的段而引发的段在二进制文件摆放位置不同的问题以及灵犀指令集块头的对齐问题,请见后面章节。