printer: shorten text size when argsize is zero

This commit is contained in:
Michael McLoughlin
2018-12-27 13:48:31 -08:00
parent 9243d299e6
commit 5dea46407c
12 changed files with 158 additions and 35 deletions

View File

@@ -20,15 +20,14 @@ func main() {
DATA(38, U8(0x66))
DATA(39, U8(0x77))
// TEXT ·DataAt(SB),0,$0-9
TEXT("DataAt", "func(i int) byte")
i := Load(Param("i"), GP64v()) // MOVQ i+0(FP), AX
i := Load(Param("i"), GP64v())
ptr := Mem{Base: GP64v()}
LEAQ(bytes, ptr.Base) // LEAQ b<>+0x00(SB), BX
LEAQ(bytes, ptr.Base)
b := GP8v()
MOVB(ptr.Idx(i, 1), b) // MOVB 0(BX)(AX*1), CL
Store(b, ReturnIndex(0)) // MOVB CL, ret+8(FP)
RET() // RET
MOVB(ptr.Idx(i, 1), b)
Store(b, ReturnIndex(0))
RET()
Generate()
}

View File

@@ -10,10 +10,10 @@ DATA bytes<>+32(SB)/4, $0x00112233
DATA bytes<>+36(SB)/2, $0x4455
DATA bytes<>+38(SB)/1, $0x66
DATA bytes<>+39(SB)/1, $0x77
GLOBL ·bytes<>(SB), RODATA, $40
GLOBL bytes<>(SB), RODATA, $40
// func DataAt(i int) byte
TEXT ·DataAt(SB),0,$0-9
TEXT ·DataAt(SB), 0, $0-9
MOVQ i(FP), AX
LEAQ bytes<>(SB), CX
MOVB (CX)(AX*1), AL