On Thursday, December 25, 2014 5:55:21 PM UTC-6, Bryan Turley wrote:

On Thursday, December 25, 2014 1:39:33 PM UTC-6, EduRam wrote:


I tried to disassemble this small go code snippet:

The result output is something like this:

[e@localhost]$ go tool 6g -S code.go

"".SumXXX t=1 size=48 value=0 args=0x10 locals=0x0
0x0000 00000 (code.go:7) TEXT "".SumXXX+0(SB),4,$0-16
0x0000 00000 (code.go:7) NOP ,
0x0000 00000 (code.go:7) NOP ,
0x0000 00000 (code.go:7) FUNCDATA
0x0000 00000 (code.go:7) FUNCDATA

0x0000 00000 (code.go:8) MOVBQZX "".xXXX+8(FP),BX
0x0005 00005 (code.go:8) MOVBQZX "".yXXX+9(FP),BP

0x000a 00010 (code.go:8) ADDQ BP,BX
0x000d 00013 (code.go:8) MOVQ BX,AX
0x0010 00016 (code.go:9) MOVBQZX "".accumXXX+0(SB),BX
0x0017 00023 (code.go:9) ADDQ AX,BX
0x001a 00026 (code.go:9) MOVB BL,"".accumXXX+0(SB)
0x0020 00032 (code.go:9) NOP ,
0x0020 00032 (code.go:10) MOVB AL,"".~r2+16(FP)
0x0024 00036 (code.go:10) RET ,

What is MOVBQZX instruction ?
I tried to google it but could not found any references out there ...
The assembler is a bit strange.

MOV Byte to Quadword (64bits) with Zero Extension or
var a byte
b := uint64(a)

It would be SX for signed ints

In x86 land "word" was/is 16bits. W = 16bits L == 32bits

In AMD's x86 manuals it is MOVSX and MOVSXD (probably the same in Intel's)

Or MOVZX... since we where originally talking about the unsigned
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Search Discussions

Discussion Posts


Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 4 of 4 | next ›
Discussion Overview
groupgolang-nuts @
postedDec 25, '14 at 7:39p
activeDec 25, '14 at 11:59p

3 users in discussion

Bryan Turley: 2 posts Khr: 1 post EduRam: 1 post



site design / logo © 2021 Grokbase