so mstart just put on stack for call traceback , but actually will not 
return at mstart?

在 2019年7月31日星期三 UTC+8下午12:08:51,Ian Lance Taylor写道:
>
> On Tue, Jul 30, 2019 at 8:58 PM <wangjin...@gmail.com <javascript:>> 
> 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 golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/c8587ec0-a09f-4215-8989-6133d307c7f8%40googlegroups.com.

Reply via email to