1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 12:32:21 +00:00

ch3: fix typo

This commit is contained in:
chai2010 2018-07-25 21:37:04 +08:00
parent 79c1474bd1
commit 927ccf36a0
2 changed files with 2 additions and 4 deletions

View File

@ -28,8 +28,6 @@ $ go tool compile -S pkg.go
其中`go tool compile`命令用于调用Go语言提供的底层命令工具其中`-S`参数表示输出汇编格式。输出的汇编比较简单,其中`"".Id`对应Id变量符号变量的内存大小为8个字节。变量的初始化内容为`37 25 00 00 00 00 00 00`对应十六进制格式的0x2537对应十进制为9527。SNOPTRDATA是相关的标志其中NOPTR表示数据中不包含指针数据。 其中`go tool compile`命令用于调用Go语言提供的底层命令工具其中`-S`参数表示输出汇编格式。输出的汇编比较简单,其中`"".Id`对应Id变量符号变量的内存大小为8个字节。变量的初始化内容为`37 25 00 00 00 00 00 00`对应十六进制格式的0x2537对应十进制为9527。SNOPTRDATA是相关的标志其中NOPTR表示数据中不包含指针数据。
暂时可以忽略。
以上的内容只是目标文件对应的汇编和Go汇编语言虽然相似当并不完全等价。Go语言官网自带了一个Go汇编语言的入门教程地址在https://golang.org/doc/asm 。 以上的内容只是目标文件对应的汇编和Go汇编语言虽然相似当并不完全等价。Go语言官网自带了一个Go汇编语言的入门教程地址在https://golang.org/doc/asm 。
Go汇编语言提供了DATA命令用于初始化包变量DATA命令的语法如下 Go汇编语言提供了DATA命令用于初始化包变量DATA命令的语法如下
@ -156,7 +154,7 @@ DATA ·Name+8(SB)/8,$6
```go ```go
package main package main
import pkg "pkg包的路径" import pkg "path/to/pkg"
func main() { func main() {
println(pkg.Name) println(pkg.Name)

View File

@ -104,7 +104,7 @@ TEXT ·Swap(SB), $0
func Foo(a bool, b int16) (c []byte) func Foo(a bool, b int16) (c []byte)
``` ```
函数的参数有不同的类型,同时含有多个返回值,而且返回值中含有更复杂的接口类型。我们该如何计算每个参数的位置和总的大小呢? 函数的参数有不同的类型,而且返回值中含有更复杂的切片类型。我们该如何计算每个参数的位置和总的大小呢?
其实函数参数和返回值的大小以及对齐问题和结构体的大小和成员对齐问题是一致的。我们可以用诡代思路将全部的参数和返回值以同样的顺序放到一个结构体中将FP伪寄存器作为唯一的一个指针参数而每个成员的地址也就是对应原来参数的地址。 其实函数参数和返回值的大小以及对齐问题和结构体的大小和成员对齐问题是一致的。我们可以用诡代思路将全部的参数和返回值以同样的顺序放到一个结构体中将FP伪寄存器作为唯一的一个指针参数而每个成员的地址也就是对应原来参数的地址。