10分钟
3.3.2.1 数组类型
汇编中数组也是一种非常简单的类型。Go语言中数组是一种有着扁平内存结构的基础类型。因此[2]byte
类型和[1]uint16
类型有着相同的内存结构。只有当数组和结构体结合之后情况才会变的稍微复杂。
下面我们尝试用汇编定义一个[2]int
类型的数组变量num:
var num [2]int
然后在汇编中定义一个对应16字节大小的变量,并用零值进行初始化:
GLOBL ·num(SB),$16
DATA ·num+0(SB)/8,$0
DATA ·num+8(SB)/8,$0
下图是Go语句和汇编语句定义变量时的对应关系:
图 3-4 变量定义
汇编代码中并不需要NOPTR标志,因为Go编译器会从Go语言语句声明的[2]int
类型中推导出该变量内部没有指针数据。
学员评价