On Mon, Jan 16, 2023 at 8:43 AM j2gg0s <feys1...@gmail.com> wrote: > > As a newbie of golang's assembly, i cant understand why we MOVQ DX CX twice > in runtime.gogo. WHY?
I don't see any MOVQ DX, CX instructions here. Can you clarify by saying exactly which instructions you are asking about? Note that MOVQ 0(DX), CX treats DX as a memory address, and moves the 8-byte value at that address into CX. And MOVQ DX, g(CX) treats CX as a memory address, and moves the value in DX into the address as "g" bytes offset from the address in CX. Ian > Source code: > ``` > 255 // func gogo(buf *gobuf) > 256 // restore state from Gobuf; longjmp > 257 TEXT runtimeĀ·gogo(SB), NOSPLIT, $0-8 > 258 MOVQ buf+0(FP), BX // gobuf > 259 MOVQ gobuf_g(BX), DX > 260 MOVQ 0(DX), CX // make sure g != nil > 261 JMP gogo<>(SB) > 262 > 263 TEXT gogo<>(SB), NOSPLIT, $0 > 264 get_tls(CX) > 265 MOVQ DX, g(CX) > 266 MOVQ DX, R14 // set the g register > 267 MOVQ gobuf_sp(BX), SP // restore SP > 268 MOVQ gobuf_ret(BX), AX > 269 MOVQ gobuf_ctxt(BX), DX > 270 MOVQ gobuf_bp(BX), BP > 271 MOVQ $0, gobuf_sp(BX) // clear to help garbage > collector > 272 MOVQ $0, gobuf_ret(BX) > 273 MOVQ $0, gobuf_ctxt(BX) > 274 MOVQ $0, gobuf_bp(BX) > 275 MOVQ gobuf_pc(BX), BX > 276 JMP BX > ``` > > Link: https://github.com/golang/go/blob/go1.17.13/src/runtime/asm_amd64.s#L255 > > > -- > 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+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/5fafeb38-1bc7-4a96-b386-41e14c431273n%40googlegroups.com. -- 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+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAOyqgcXnxR_m0at6JLAMRrXMZH331EO12xM%3Dut9JzX7LF_eJew%40mail.gmail.com.