| { |
| "asm": [ |
| { |
| "source": null, |
| "text": "_TLS SEGMENT" |
| }, |
| { |
| "source": null, |
| "text": "?h@@3HA DD 012345H ; h" |
| }, |
| { |
| "source": null, |
| "text": " ORG $+4" |
| }, |
| { |
| "source": null, |
| "text": "?g@@3Usafetls@@A DD 098765H ; g" |
| }, |
| { |
| "source": null, |
| "text": " ORG $+8" |
| }, |
| { |
| "source": null, |
| "text": "_TLS ENDS" |
| }, |
| { |
| "source": null, |
| "text": "" |
| }, |
| { |
| "source": null, |
| "text": "this$ = 8" |
| }, |
| { |
| "source": null, |
| "text": "?value@safetls@@QEAAHXZ PROC ; safetls::value, COMDAT" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 9 |
| }, |
| "text": " mov QWORD PTR [rsp+8], rcx" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 9 |
| }, |
| "text": " mov rax, QWORD PTR this$[rsp]" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 9 |
| }, |
| "text": " mov rcx, QWORD PTR this$[rsp]" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 9 |
| }, |
| "text": " mov ecx, DWORD PTR [rcx+4]" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 9 |
| }, |
| "text": " mov eax, DWORD PTR [rax]" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 9 |
| }, |
| "text": " sub eax, ecx" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 9 |
| }, |
| "text": " mov rcx, QWORD PTR this$[rsp]" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 9 |
| }, |
| "text": " add eax, DWORD PTR [rcx+8]" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 9 |
| }, |
| "text": " ret 0" |
| }, |
| { |
| "source": null, |
| "text": "?value@safetls@@QEAAHXZ ENDP ; safetls::value" |
| }, |
| { |
| "source": null, |
| "text": "" |
| }, |
| { |
| "source": null, |
| "text": "?func@@YAHXZ PROC ; func, COMDAT" |
| }, |
| { |
| "source": null, |
| "text": "$LN3:" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 16 |
| }, |
| "text": " sub rsp, 40 ; 00000028H" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 17 |
| }, |
| "text": " mov eax, OFFSET FLAT:?g@@3Usafetls@@A ; g" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 17 |
| }, |
| "text": " mov eax, eax" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 17 |
| }, |
| "text": " mov ecx, DWORD PTR _tls_index" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 17 |
| }, |
| "text": " mov rdx, QWORD PTR gs:88" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 17 |
| }, |
| "text": " add rax, QWORD PTR [rdx+rcx*8]" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 17 |
| }, |
| "text": " mov rcx, rax" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 17 |
| }, |
| "text": " call ?value@safetls@@QEAAHXZ ; safetls::value" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 18 |
| }, |
| "text": " add rsp, 40 ; 00000028H" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 18 |
| }, |
| "text": " ret 0" |
| }, |
| { |
| "source": null, |
| "text": "?func@@YAHXZ ENDP ; func" |
| }, |
| { |
| "source": null, |
| "text": "" |
| }, |
| { |
| "source": null, |
| "text": "?func2@@YAHXZ PROC ; func2, COMDAT" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 22 |
| }, |
| "text": " mov eax, OFFSET FLAT:?h@@3HA ; h" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 22 |
| }, |
| "text": " mov eax, eax" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 22 |
| }, |
| "text": " mov ecx, DWORD PTR _tls_index" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 22 |
| }, |
| "text": " mov rdx, QWORD PTR gs:88" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 22 |
| }, |
| "text": " mov rcx, QWORD PTR [rdx+rcx*8]" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 22 |
| }, |
| "text": " mov eax, DWORD PTR [rax+rcx]" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 23 |
| }, |
| "text": " ret 0" |
| }, |
| { |
| "source": null, |
| "text": "?func2@@YAHXZ ENDP ; func2" |
| }, |
| { |
| "source": null, |
| "text": "" |
| }, |
| { |
| "source": null, |
| "text": "tv64 = 32" |
| }, |
| { |
| "source": null, |
| "text": "main PROC" |
| }, |
| { |
| "source": null, |
| "text": "$LN3:" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 26 |
| }, |
| "text": " sub rsp, 56 ; 00000038H" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 27 |
| }, |
| "text": " call ?func@@YAHXZ ; func" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 27 |
| }, |
| "text": " mov DWORD PTR tv64[rsp], eax" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 27 |
| }, |
| "text": " call ?func2@@YAHXZ ; func2" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 27 |
| }, |
| "text": " mov ecx, DWORD PTR tv64[rsp]" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 27 |
| }, |
| "text": " add ecx, eax" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 27 |
| }, |
| "text": " mov eax, ecx" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 28 |
| }, |
| "text": " add rsp, 56 ; 00000038H" |
| }, |
| { |
| "source": { |
| "file": null, |
| "line": 28 |
| }, |
| "text": " ret 0" |
| }, |
| { |
| "source": null, |
| "text": "main ENDP" |
| } |
| ] |
| } |