On Sat, Aug 10, 2019 at 11:25 PM Yang Wu <wuyang...@gmail.com> wrote:
>
> $ go version
> go version go1.12.7 darwin/amd64
> $ uname -a
> Darwin WudeMacBook-Pro.local 18.6.0 Darwin Kernel Version 18.6.0: Thu Apr 25 
> 23:16:27 PDT 2019;RELEASE_X86_64 x86_64
>
> I read a asm code segment recently, it look like this:
>
> mov   %fs:-8, %RCX               // load G descriptor from TLS
> cmp   16(%RCX), %RSP
> jbe      morestack
>
> How do I know mov %fs:-8, %RCX is load G descriptor from TLS ?
>
> When I learn about the runtime package, I find that MOVQ $0x123, g(BX) in 
> asm_amd64.s. It is disass like this, mov qword ptr gs:[0x30], 0x123 when I 
> using delve. I figure that they may be the same question. But I am not sure 
> about this

That disassembly from delve doesn't look right to me.  When I
disassemble that instruction in asm_amd64.s using objdump, using AT&T
syntax, I see

  451270:       64 48 c7 04 25 f8 ff    movq   $0x123,%fs:0xfffffffffffffff8

So that corresponds to the instructions you mention before, which are
used in function prologues.

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/CAOyqgcXgLsHfo8CcpNVui%3DuA2JvTU%2BTaCGPSL2daN3qcVzY_8g%40mail.gmail.com.

Reply via email to