认识汇编 - 段
段
回顾上篇的代码
section .data hello: db "Hello World!",10
section .text_start: mov rax, 1 ; ......
一个程序的内容有资料有代码等等,为了将这些内容划分出来,于是有了不同的段
段的使用方式是section 段名
,宣告后的底下内容全都适用于该段,直到宣告不同的段
以下列举一些开发过程常用的段
.data 数据段
事先存放定义好的内容到记忆体中,以变量名: 格式 内容
的方式定义
资料格式d开头加上单位首字,以下是整个开发过程常用的单位
byte: 1 byte = 8 bitsword: 2 bytes = 16 bitsdword: 4 bytes = 32 bitsqword: 8 bytes = 64 bits
字符编码默认依照原文件的编码,所以支援utf-8,而ascii和utf-8的0~127是相同的
上面的hello会被当成
H e l l o w o r l d ! \n72 101 108 108 111 32 87 111 114 108 100 33 10
.rodata 只读数据段
.data的read only版本,当数据用途只有读取而不写入时使用,比如这个hello
.bss 段
未定义内容的资料,预先设定一块会用到的空间,可读可写
以变量名: 格式 数量
的方式定义,格式是res加上单位首字
例如:data: resq 2
定义8x2 bytes的资料大小
.text 代码段
也称为文字段,用来放我们写的代码,汇编后的机器码就在这边