mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-23 20:02:22 +00:00
fix typo
This commit is contained in:
parent
a5be4d7bd6
commit
0e4b674b0f
@ -61,7 +61,7 @@
|
||||
- 算术相关(ADD/SUB/BUMP+/BUMP-)
|
||||
- 跳转指令: 如果是条件跳转,寄存器中必须要有数据
|
||||
|
||||
主流的处理器也有类似的指令。除了基本的算术和逻辑预算指令外,再配合有条件跳转指令就可以实现分支、循环等常见控制流结构了。
|
||||
主流的处理器也有类似的指令。除了基本的算术和逻辑运算指令外,再配合有条件跳转指令就可以实现分支、循环等常见控制流结构了。
|
||||
|
||||
下图是某一层的任务:将输入数据的0剔除,非0的数据依次输出,右边部分是解决方案。
|
||||
|
||||
|
@ -44,7 +44,7 @@ DATA ·Name+8(SB)/8,$6
|
||||
|
||||
## 3.3.2 全局变量
|
||||
|
||||
在Go语言中,变量根据作用域和生命周期有全局变量和局部变量之分。全局变量是包一级的变量,全局变量一般有着较为固定的内存地址,声明周期跨越整个程序运行时间。而局部变量一般是函数内定义的的变量,只有在函数被执行的时间才被在栈上创建,当函数调用完成后将回收(暂时不考虑闭包对局部变量捕获的问题)。
|
||||
在Go语言中,变量根据作用域和生命周期有全局变量和局部变量之分。全局变量是包一级的变量,全局变量一般有着较为固定的内存地址,生命周期跨越整个程序运行时间。而局部变量一般是函数内定义的的变量,只有在函数被执行的时间才被在栈上创建,当函数调用完成后将回收(暂时不考虑闭包对局部变量捕获的问题)。
|
||||
|
||||
从Go汇编语言角度来看,全局变量和局部变量有着非常大的差异。在Go汇编中全局变量和全局函数更为相似,都是通过一个人为定义的符号来引用对应的内存,区别只是内存中存放是数据还是要执行的指令。因为在冯诺伊曼系统结构的计算机中指令也是数据,而且指令和数据存放在统一编址的内存中。因为指令和数据并没有本质的差别,因此我们甚至可以像操作数据那样动态生成指令(这是所有JIT技术的原理)。而局部变量则需在了解了汇编函数之后,才能通过SP栈空间来隐式定义。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user