Go

Go 知识量:6 - 35 - 115

3.3 常量和全局变量><

常量- 3.3.1 -

在Go汇编语言中,常量是在代码中直接表示的固定值。它们可以是整数、浮点数、字符或字符串等类型。常量的表示方式取决于它们的类型。

  • 整数常量:整数常量可以是十进制、十六进制或八进制表示。例如,$123、$0x7b和$0123都是整数常量。

  • 浮点数常量:浮点数常量使用标准的实数格式,例如$123.456。

  • 字符常量:字符常量使用单引号括起来,例如$'a'。

  • 字符串常量:字符串常量使用双引号括起来,例如$("Hello, World!")。

注意:在Go汇编语言中,常量是在代码中直接表示的,而不是通过操作码或寄存器来间接表示的。因此,常量的值在编译时就已经确定,并且在运行时无法修改。

全局变量- 3.3.2 -

从Go汇编语言的角度来看,全局变量是在整个程序中都可以访问和修改的变量。它们在程序开始执行之前就被分配了内存空间,并且一直存在直到程序结束。

在Go汇编语言中,全局变量通常通过标签(label)来表示,并且存储在数据段(data segment)中。全局变量的生命周期从程序开始执行一直持续到程序结束,因此它们可以被程序中的任何函数访问和修改。

由于全局变量在整个程序中都可见,因此它们可以作为不同函数之间共享数据的机制。然而,过度使用全局变量可能会导致代码难以维护和理解,因此应该谨慎使用。

在Go汇编语言中,可以通过特定的指令来访问全局变量。例如,可以使用MOVQ指令将一个值移动到全局变量的地址,或者使用MOVB、MOVW、MOVL、MOVQ等指令来对全局变量进行加载、存储和修改等操作。

需要注意的是,在并发编程中,全局变量可能会引起竞态条件(race condition)的问题,因此需要采取适当的同步措施来保护对全局变量的访问。

标识符规则和特殊标志- 3.3.3 -

在Go汇编语言中,标识符用于表示变量、常量、函数、结构体等名称。以下是Go汇编语言中标识符的规则和特殊标志:

1. 标识符规则:

  • 标识符可以由字母、数字和下划线组成。

  • 标识符只能以字母或下划线开头,不能以数字开头。

  • 标识符区分大小写,即大写字母和小写字母被认为是不同的标识符。

  • 标识符不能包含空格。

  • 不能使用Go语言中的保留字作为标识符。

  • 不能使用以点开头或结尾的标识符。

2. 特殊标志:

  • $:在Go汇编语言中,美元符号$用于表示常量。例如,$0表示立即数0,$foo表示一个名为foo的常量。

  • %:百分号%用于表示汇编指令,如%ADD表示加法指令。

  • #:井号#用于表示立即数。例如,MOVQ #0, rax表示将立即数0移动到寄存器rax中。

  • @:在Go汇编语言中,下划线_用于表示忽略某个操作数或结果。例如,在调用函数时使用下划线表示忽略返回值。