diff --git a/ch3-asm/ch3-03-const-and-var.md b/ch3-asm/ch3-03-const-and-var.md index 636dede..4764e6a 100644 --- a/ch3-asm/ch3-03-const-and-var.md +++ b/ch3-asm/ch3-03-const-and-var.md @@ -1,3 +1,31 @@ -# 3.3. 常量和变量(Doing) +# 3.3. 常量和全局变量(Doing) + +程序中的一切变量的初始值都直接或间接地依赖常量或常量表达式生成。在Go语言中很多变量是默认零值初始化的,但是Go汇编中定义的变量最好还是手工通过常量初始化。有了常量之后,就可以定义全局变量,并使用常量组成的表达式初始化全部变量。本节将简单讨论Go汇编语言中常量和全局变量的用法。 + +## 常量 + +Go汇编语言中常量以$美元符号为前缀。常量的类型有整数常量、浮点数常量、字符常量和字符串常量等几种类型。以下是几种类型常量的例子: + +``` +$1 // 十进制 +$0xf4f8fcff // 十六进制 +$1.5 // 浮点数 +$'a' // 字符 +$"abcd" // 字符串 +``` + +其中整数类型常量默认是十进制格式,也可以用十六进制格式表示整数常量。所有的常量最终都必须和要初始化的变量内存大小匹配。 + +对于数值型常量,可以通过常量表达式构成新的常量: + +``` +$2+2 // 常量表达式 +$3&1<<2 // == $4 +$(3&1)<<2 // == $4 +``` + +其中常量表达式中运算符的优先级和Go语言保持一致。 + +## 全局变量 TODO