mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-23 20:02:22 +00:00
commit
f23af32fb5
@ -199,7 +199,7 @@ GLOBL ·float64Value(SB),$8
|
||||
DATA ·float64Value(SB)/8,$0x01020304 // bit 方式初始化
|
||||
```
|
||||
|
||||
我们在上一节精简的算术指令中都是针对整数,如果要通过整数指令处理浮点数的加减法必须根据浮点数的运算规则进行:先对齐小数点,然后进行整数加减法,最后再对结果进行归一化并处理精度舍入问题。不过在目前的主流CPU中,都提针对浮点数提供了专有的计算指令。
|
||||
我们在上一节精简的算术指令中都是针对整数,如果要通过整数指令处理浮点数的加减法必须根据浮点数的运算规则进行:先对齐小数点,然后进行整数加减法,最后再对结果进行归一化并处理精度舍入问题。不过在目前的主流CPU中,都针对浮点数提供了专有的计算指令。
|
||||
|
||||
### 3.3.2.5 string类型变量
|
||||
|
||||
@ -297,7 +297,7 @@ func makemap(mapType *byte, hint int, mapbuf *any) (hmap map[any]any)
|
||||
func makechan(chanType *byte, size int) (hchan chan any)
|
||||
```
|
||||
|
||||
需要注意的是,makemap是一种范型函数,可以创建不同类型的map,map的具体类型是通过mapType参数指定。
|
||||
需要注意的是,makemap是一种泛型函数,可以创建不同类型的map,map的具体类型是通过mapType参数指定。
|
||||
|
||||
|
||||
## 3.3.3 变量的内存布局
|
||||
@ -320,7 +320,7 @@ func makechan(chanType *byte, size int) (hchan chan any)
|
||||
*图 3-7 结构体变量定义*
|
||||
|
||||
|
||||
变量也时在data段分配空间,变量结构体成员的地址也是依次从低向高排列。
|
||||
变量也是在data段分配空间,变量结构体成员的地址也是依次从低向高排列。
|
||||
|
||||
因此`[2]int`和`image.Point`类型底层有着近似相同的内存布局。
|
||||
|
||||
|
@ -159,11 +159,11 @@ Foo函数的参数和返回值的大小和内存布局:
|
||||
|
||||
```
|
||||
TEXT ·Foo(SB), $0
|
||||
MOVEQ a+0(FP), AX // a
|
||||
MOVEQ b+2(FP), BX // b
|
||||
MOVEQ c_dat+8*1(FP), CX // c.Data
|
||||
MOVEQ c_len+8*2(FP), DX // c.Len
|
||||
MOVEQ c_cap+8*3(FP), DI // c.Cap
|
||||
MOVQ a+0(FP), AX // a
|
||||
MOVQ b+2(FP), BX // b
|
||||
MOVQ c_dat+8*1(FP), CX // c.Data
|
||||
MOVQ c_len+8*2(FP), DX // c.Len
|
||||
MOVQ c_cap+8*3(FP), DI // c.Cap
|
||||
RET
|
||||
```
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user