images: 增加 asm 相关图片
2
.gitignore
vendored
@ -29,3 +29,5 @@ _book
|
||||
*.obj
|
||||
*.o
|
||||
a.out
|
||||
|
||||
.oracle_jre_usage
|
||||
|
@ -9,7 +9,10 @@ UML_PNG_FILES=$(patsubst %.plantuml,%.uml.png,$(UML_FILES))
|
||||
DOT_FILES=$(wildcard ./*.dot)
|
||||
DOT_PNG_FILES=$(patsubst %.dot,%.dot.png,$(DOT_FILES))
|
||||
|
||||
default: $(UML_PNG_FILES) $(DOT_PNG_FILES)
|
||||
DITAA_FILES=$(wildcard ./*.ditaa.txt)
|
||||
DITAA_PNG_FILES=$(patsubst %.ditaa.txt,%.ditaa.png,$(DITAA_FILES))
|
||||
|
||||
default: $(UML_PNG_FILES) $(DOT_PNG_FILES) $(DITAA_PNG_FILES)
|
||||
@echo "ok"
|
||||
|
||||
logo:
|
||||
@ -29,3 +32,6 @@ clean:
|
||||
|
||||
%.dot.png: %.dot
|
||||
dot -Tpng -o $@ $<
|
||||
|
||||
%.ditaa.png: %.ditaa.txt
|
||||
docker run --rm -it -v `pwd`:/root chai2010/ibox:ditaa $< $@
|
||||
|
BIN
images/ch3-arch-amd64-01.ditaa.png
Normal file
After Width: | Height: | Size: 20 KiB |
29
images/ch3-arch-amd64-01.ditaa.txt
Normal file
@ -0,0 +1,29 @@
|
||||
X86/AMD64 Architecture
|
||||
|
||||
+----------+ +---------+ +--------------------+
|
||||
| cRED | high | FLAGS | | MOV/LEA |
|
||||
| stack | ^ +---------+ +--------------------+
|
||||
| | | | | IP | | CMP/TEST/JMP/J[CC] |
|
||||
| | | | +---------+ +--------------------+
|
||||
| v | | | PUSH/POP |
|
||||
+----------+ | +---------+ +--------------------+
|
||||
| | | | AX | | CALL/RET |
|
||||
| cAAA | | +---------+ +--------------------+
|
||||
| unused | | | BX |
|
||||
| | | +---------+ +--------------------+
|
||||
| | | | CX | | ADD/SUB/MUL/DIV |
|
||||
+----------+ | +---------+ +--------------------+
|
||||
| cYEL | | | DX | | AND/OR/XOR/NOT |
|
||||
| heap | | +---------+ +--------------------+
|
||||
| | | | SI | | SHL/SHR |
|
||||
+----------+ | +---------+ +--------------------+
|
||||
| cGRE | | | DI |
|
||||
| data | | +---------+ +--------------------+
|
||||
+----------+ | | BP | | |
|
||||
| cGRE | | +---------+ | |
|
||||
| rodata | | | SP | | ...more ins... |
|
||||
+----------+ | +---------+ | |
|
||||
| cBLU | | | R8~R15 | | |
|
||||
| text | low +---------+ +--------------------+
|
||||
+----------+
|
||||
Memory Register Instructions
|
BIN
images/ch3-arch-amd64-02.ditaa.png
Normal file
After Width: | Height: | Size: 24 KiB |
29
images/ch3-arch-amd64-02.ditaa.txt
Normal file
@ -0,0 +1,29 @@
|
||||
Go's Assembler pseudo registers
|
||||
|
||||
+----------+ +---------+ +--------------------+
|
||||
| cYEL | | FLAGS | | MOV/LEA |
|
||||
| heap | +---------+ +---------+ +--------------------+
|
||||
| | | PC cBLU+-----+ IP cBLU| | CMP/TEST/JMP/J[CC] |
|
||||
+----------+ +---------+ +---------+ +--------------------+
|
||||
| cRED | | PUSH/POP |
|
||||
| stack | +---------+ +--------------------+
|
||||
+----------+ | AX | | CALL/RET |
|
||||
| cRED | a+0(FP)+---------+ +---------+ +--------------------+
|
||||
| frame | <-=----+ FP cRED| | BX |
|
||||
+----------+ +---------+ +---------+ +--------------------+
|
||||
| cRED | <-=----+ SP cRED| | CX | | ADD/SUB/MUL/DIV |
|
||||
| local | t-8(SP)+---------+ +---------+ +--------------------+
|
||||
| | | | DX | | AND/OR/XOR/NOT |
|
||||
| : | +---------+ +--------------------+
|
||||
| v | <-=--------+ | SI | | SHL/SHR |
|
||||
+----------+ +0(SP) | +---------+ +--------------------+
|
||||
| cGRE | | | DI |
|
||||
| data | | +---------+ +--------------------+
|
||||
+----------+ | | BP | | |
|
||||
| cGRE | | +---------+ | |
|
||||
| rodata | +-=---------+ SP cPNK| | ...more ins... |
|
||||
+----------+ +---------+ +---------+ | |
|
||||
| cBLU | +--+ SB cBLU| | R8~R15 | | |
|
||||
| text | | +---------+ +---------+ +--------------------+
|
||||
+----------+ <-=-+
|
||||
Memory Pseudo Registers Real Register Instructions
|
BIN
images/ch3-func-arg-01.ditaa.png
Normal file
After Width: | Height: | Size: 30 KiB |
50
images/ch3-func-arg-01.ditaa.txt
Normal file
@ -0,0 +1,50 @@
|
||||
function arguments and return values layout
|
||||
|
||||
+------+-----+-------------------+--------+
|
||||
| | | | |
|
||||
| func | Foo | (a bool, b int16) | []byte | unsafe.Sizeof(struct{a bool; b int16; c []byte})
|
||||
| c1AB | c1AB| cRED | cRED |
|
||||
+------+-----+-------------------+--------+
|
||||
| |
|
||||
+-----------=-+ +-=--------------------------+
|
||||
| |
|
||||
v v
|
||||
+-----------------+-------------------------------+--------------------------------------+
|
||||
| | | |
|
||||
| a bool, b int16 | | c reflect.SliceHeader |
|
||||
| cRED | | cRED |
|
||||
+-----------------+-=-----------------------------+--------------------------------------+
|
||||
| | | | |
|
||||
: : : : :
|
||||
| | | | |
|
||||
v v v v v
|
||||
+---------+----------+----------------------------+-----------------+--------+-----------+
|
||||
| | | | | | |
|
||||
| a bool, | b int16, | | c.Data uintptr, | c.Len, | c.Cap int |
|
||||
| cBLU | cPNK | | cGRE | cGRE | cGRE |
|
||||
+---------+----------+-=--------------------------+-----------------+--------+-----------+
|
||||
| | | | |
|
||||
+---------+ argsize+32(FP)---=-+ | | |
|
||||
: | | | |
|
||||
| +-------------------------------------+ <-+ | | |
|
||||
| | cGRE | | | :
|
||||
| | c.Cap | | | |
|
||||
| | 64bit | | | |
|
||||
| +-------------------------------------+ <-=-|-=------------|---------+
|
||||
| | cGRE | | | c.Cap+24(FP)
|
||||
| | c.Len | | |
|
||||
| | 64bit | | |
|
||||
| +-------------------------------------+ <-=-|-=------------+c.Len+16(FP)
|
||||
| | cGRE | |
|
||||
| | c.Data | |
|
||||
| | 64bit | |
|
||||
| +----+----+--------+------------------+ <-=-+c.Data+8(FP)
|
||||
| |cBLU|cAAA|cPNK |cAAA |
|
||||
+----> | a | | b | |
|
||||
|8bit|8bit| 16bit | 32bit |
|
||||
+----+----+--------+------------------+ <--=-0(FP)
|
||||
^ ^
|
||||
| |
|
||||
| +-=-b+2(FP)
|
||||
|
|
||||
+-=-a+0(FP)
|
BIN
images/ch3-func-decl-01.ditaa.png
Normal file
After Width: | Height: | Size: 14 KiB |
25
images/ch3-func-decl-01.ditaa.txt
Normal file
@ -0,0 +1,25 @@
|
||||
func Swap(a, b int) (int, int)
|
||||
|
||||
+------+------+-------------------------------------------------------+-----------------------+
|
||||
| | | | |
|
||||
| func | Swap | | (a, b int) (int, int) |
|
||||
| cYEL | cGRE | cAAA | cRED |
|
||||
+------+------+-------------------------------------------------------+-----------------------+
|
||||
| | |
|
||||
: : :
|
||||
v v v
|
||||
+------+-------+-------+-----------------------------+------------+---+-----------------------+
|
||||
| | | | | | | |
|
||||
| TEXT | ·Swap | (SB), | [NOSPLIT/WRAPPER/NEEDCTXT,] | $framesize | - | $32 |
|
||||
| cYEL | cGRE | cGRE | cPNK | cRED | | cRED |
|
||||
+------+-------+-------+-----------------------------+------------+---+-----------------------+
|
||||
| | |
|
||||
: : +-------------------------------=-+
|
||||
| | |
|
||||
v v v
|
||||
+------+------------+------------+
|
||||
| | | |
|
||||
| TEXT | ·Swap(SB), | $framesize |
|
||||
| cYEL | cGRE | cRED |
|
||||
+------+------------+------------+
|
||||
|
BIN
images/ch3-func-decl-02.ditaa.png
Normal file
After Width: | Height: | Size: 18 KiB |
30
images/ch3-func-decl-02.ditaa.txt
Normal file
@ -0,0 +1,30 @@
|
||||
func Swap(a, b int) (int, int)
|
||||
|
||||
+----------+
|
||||
| |
|
||||
| stack |
|
||||
| cRED | call frame
|
||||
+----------+ +-----------+ <-=-arg+argsize(FP)
|
||||
| stack | <--------=- | argsize | <------------------------+argsize
|
||||
| | | cPNK | :
|
||||
|call frame| +-----------+ <-=-arg+0(FP) |
|
||||
| | | | cAAA | |
|
||||
| | | +-----------+ <-=-tmp-0(SP) |
|
||||
|cRED| | <--------=- | framesize | <---------+framesize |
|
||||
| v | | cRED | : |
|
||||
+----------+ <-=-0(SP) +-----------+ <-=-0(SP) | |
|
||||
| cAAA | | |
|
||||
| unused | | |
|
||||
| | | |
|
||||
+----------+ | |
|
||||
| cGRE | | |
|
||||
| heap | | |
|
||||
| | +------+------------+------------+---+------+
|
||||
+----------+ | | | | | |
|
||||
| cBLU | +-----=- | TEXT | ·Swap(SB), | $framesize | - | 32 |
|
||||
| data | | | cYEL | cYEL | cRED | | cRED |
|
||||
+----------+ | +------+------------+------------+---+------+
|
||||
| cYEL | <--+TEXT |
|
||||
| text | :
|
||||
+----------+ <--------------------------+SB
|
||||
|
BIN
images/ch3-pkg-var-decl-01.ditaa.png
Normal file
After Width: | Height: | Size: 15 KiB |
30
images/ch3-pkg-var-decl-01.ditaa.txt
Normal file
@ -0,0 +1,30 @@
|
||||
var num [2]int
|
||||
|
||||
+-------+------+-------------------------------+--------+-----------------+
|
||||
| | | | | |
|
||||
| var | num | | [2]int | // [2]int{0, 0} |
|
||||
| cBLU | cGRE | cAAA | cRED | cGRE |
|
||||
+-------+------+-------------------------------+--------+-----------------+
|
||||
| | | |
|
||||
| | NOPTR+---------------+ |
|
||||
: : : : |
|
||||
v v v v |
|
||||
+-------+------+-------+-----------------------+--------+ |
|
||||
| | | | | | |
|
||||
| GLOBL | ·num | (SB), | [NOPTR|RODATA|DUPOK,] | $16 | |
|
||||
| cBLU | cGRE | | | cRED | |
|
||||
+-------+------+-------+-----------------------+--------+ |
|
||||
| | | |
|
||||
| | +-------------+--------------------+ |
|
||||
| | | | +-------------------------+
|
||||
: : : : :
|
||||
v v v v v
|
||||
+-------+--------------+---+------+-----+
|
||||
| | | | | |
|
||||
| DATA | ·num+0(SB) | / | 8, | $0 |
|
||||
| cBLU | cYEL | | cRED |cRED |
|
||||
+-------+--------------+---+------+-----+
|
||||
| | | | | |
|
||||
| DATA | ·num+8(SB) | / | 8, | $0 |
|
||||
| cBLU | cYEL | | cRED |cRED |
|
||||
+-------+--------------+---+------+-----+
|
BIN
images/ch3-pkg-var-decl-02.ditaa.png
Normal file
After Width: | Height: | Size: 21 KiB |
37
images/ch3-pkg-var-decl-02.ditaa.txt
Normal file
@ -0,0 +1,37 @@
|
||||
var num [2]int
|
||||
|
||||
+----------+
|
||||
| |
|
||||
| stack |
|
||||
| cRED |
|
||||
+----------+ +----------------+ +--------------------+
|
||||
| cAAA | | cGRE | | cPNK |
|
||||
| unused | | var num [2]int | -=------------> | unsafe.Sizeof(num) |
|
||||
| | | | | |
|
||||
+----------+ +----------------+ +--------------------+
|
||||
| cAAA | | |
|
||||
| heap | | |
|
||||
| | | |
|
||||
+----------+ | |
|
||||
| cBLU | | |
|
||||
| data | : |
|
||||
| | v |
|
||||
+----------+ +-------+--------------+---+------+-----+ |
|
||||
| | | | | | | | |
|
||||
|pkg·num[1]| <------=-- | DATA | ·num+8(SB) | / | 8, | $0 | |
|
||||
| cBLU | | cBLU | cYEL | | cRED |cRED | |
|
||||
+----------+ +-------+--------------+---+------+-----+ |
|
||||
| | | | | | | | |
|
||||
|pkg·num[0]| <------=-- | DATA | ·num+0(SB) | / | 8, | $0 | |
|
||||
| cBLU | | cBLU | cYEL | | cRED |cRED | |
|
||||
+----------+ <--+ +-------+--------------+---+------+-----+ |
|
||||
| cBLU | | |
|
||||
| data | +----------------=-+pkg·num :
|
||||
| | | v
|
||||
+----------+ +-------+------+-------+-----------------------+--------+
|
||||
| cYEL | | | | | | |
|
||||
| text | | GLOBL | ·num | (SB), | NOPTR, | $16 |
|
||||
| | | cBLU | cYEL | cYEL | cPNK | cRED |
|
||||
+----------+ <--+ +-------+------+-------+-----------------------+--------+
|
||||
| |
|
||||
+------------------------=-+SB
|
BIN
images/ch3-pkg-var-decl-03.ditaa.png
Normal file
After Width: | Height: | Size: 27 KiB |
37
images/ch3-pkg-var-decl-03.ditaa.txt
Normal file
@ -0,0 +1,37 @@
|
||||
var pt image.Point
|
||||
|
||||
+----------+
|
||||
| |
|
||||
| stack | +--------------------+ +-------------------+
|
||||
| cRED | | cGRE | | cPNK |
|
||||
+----------+ | var pt image.Point | -=--------> | unsafe.Sizeof(pt) |
|
||||
| cAAA | | | | |
|
||||
| unused | +--------------------+ +-------------------+
|
||||
| | | |
|
||||
+----------+ | |
|
||||
| cAAA | | +=-unsafe.Offsetof(pt.Y) |
|
||||
| heap | | +=-unsafe.Offsetof(pt.X) |
|
||||
| | | | |
|
||||
+----------+ | | unsafe.Sizeof(pt.Y) |
|
||||
| cBLU | | | unsafe.Sizeof(pt.X) |
|
||||
| data | : | | |
|
||||
| | v v v |
|
||||
+----------+ +-------+--------------+---+------+-----+ |
|
||||
| | | | | | | | |
|
||||
| pkg·pt.Y | <------=-- | DATA | ·pt+8(SB) | / | 8, | $0 | |
|
||||
| cBLU | | cBLU | cYEL | | cRED |cRED | |
|
||||
+----------+ +-------+--------------+---+------+-----+ |
|
||||
| | | | | | | | |
|
||||
| pkg·pt.X | <------=-- | DATA | ·pt+0(SB) | / | 8, | $0 | |
|
||||
| cBLU | | cBLU | cYEL | | cRED |cRED | |
|
||||
+----------+ <--+ +-------+--------------+---+------+-----+ |
|
||||
| cBLU | | |
|
||||
| data | +----------------=-+ :
|
||||
| | pkg·pt | v
|
||||
+----------+ +-------+------+-------+-----------------------+--------+
|
||||
| cYEL | | | | | | |
|
||||
| text | | GLOBL | ·pt | (SB), | NOPTR, | $16 |
|
||||
| | | cBLU | cYEL | cYEL | cPNK | cRED |
|
||||
+----------+ <--+ +-------+------+-------+-----------------------+--------+
|
||||
| |
|
||||
+------------------------=-+SB
|
BIN
images/ch6-controller-logic-dao-storage.uml.png
Normal file
After Width: | Height: | Size: 38 KiB |