On Wed, Jul 31, 2019 at 4:49 AM jin wang <[email protected]> wrote: > > so mstart just put on stack for call traceback , but actually will not return > at mstart?
Yes. As you can see, the systemstack function changes the stack pointer back to its original value before it returns to its caller. It does not return on the stack where mstart is stored. Ian > 在 2019年7月31日星期三 UTC+8下午12:08:51,Ian Lance Taylor写道: >> >> On Tue, Jul 30, 2019 at 8:58 PM <[email protected]> wrote: >> > >> > I read go runtime code,but I'm poor in assembly language, >> > i can't understand the following code >> > // switch to g0 >> > MOVQ DX, g(CX) >> > MOVQ (g_sched+gobuf_sp)(DX), BX >> > // make it look like mstart called systemstack on g0, to stop >> > traceback >> > SUBQ $8, BX >> > MOVQ $runtime·mstart(SB), DX >> > MOVQ DX, 0(BX) >> > MOVQ BX, SP >> > >> > >> > what does copy runtime·mstart to stack means,could someone help me >> >> It does exactly what the comment says: when doing a stack traceback, >> it makes it appear that mstart called systemstack. When a function is >> called, the return address is placed on the stack. In this case the >> assembly code is deliberately putting mstart on the stack, so that >> that is what a traceback will see. >> >> Ian > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/c8587ec0-a09f-4215-8989-6133d307c7f8%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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAOyqgcUeTFgtegb%3DKxvko6gAuyn_ApjS%3Ds_uDvfW4xrU7S-QbQ%40mail.gmail.com.
