Advertisement
Guest User

atomic.go asm

a guest
Oct 27th, 2019
1,070
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.51 KB | None | 0 0
  1. TEXT %22%22.try(SB) gofile../path/atomic.go
  2. func try() {
  3. 0x653 65488b0c2500000000 MOVQ GS:0, CX [5:9]R_TLS_LE
  4. 0x65c 483b6110 CMPQ 0x10(CX), SP
  5. 0x660 0f86bb000000 JBE 0x721
  6. 0x666 4883ec38 SUBQ $0x38, SP
  7. 0x66a 48896c2430 MOVQ BP, 0x30(SP)
  8. 0x66f 488d6c2430 LEAQ 0x30(SP), BP
  9. var a, b int32
  10. 0x674 488d0500000000 LEAQ 0(IP), AX [3:7]R_PCREL:type.int32
  11. 0x67b 48890424 MOVQ AX, 0(SP)
  12. 0x67f e800000000 CALL 0x684 [1:5]R_CALL:runtime.newobject
  13. 0x684 488b442408 MOVQ 0x8(SP), AX
  14. 0x689 4889442428 MOVQ AX, 0x28(SP)
  15. 0x68e 488d0d00000000 LEAQ 0(IP), CX [3:7]R_PCREL:type.int32
  16. 0x695 48890c24 MOVQ CX, 0(SP)
  17. 0x699 e800000000 CALL 0x69e [1:5]R_CALL:runtime.newobject
  18. 0x69e 488b442408 MOVQ 0x8(SP), AX
  19. 0x6a3 4889442420 MOVQ AX, 0x20(SP)
  20. go func() {
  21. 0x6a8 c7042410000000 MOVL $0x10, 0(SP)
  22. 0x6af 488d0d00000000 LEAQ 0(IP), CX [3:7]R_PCREL:%22%22.try.func1·f
  23. 0x6b6 48894c2408 MOVQ CX, 0x8(SP)
  24. 0x6bb 488b4c2428 MOVQ 0x28(SP), CX
  25. 0x6c0 48894c2410 MOVQ CX, 0x10(SP)
  26. 0x6c5 4889442418 MOVQ AX, 0x18(SP)
  27. 0x6ca e800000000 CALL 0x6cf [1:5]R_CALL:runtime.newproc
  28. for {
  29. 0x6cf eb12 JMP 0x6e3
  30. runtime.Gosched()
  31. 0x6d1 90 NOPL
  32. checkTimeouts()
  33. 0x6d2 90 NOPL
  34. mcall(gosched_m)
  35. 0x6d3 488d0500000000 LEAQ 0(IP), AX [3:7]R_PCREL:runtime.gosched_m·f
  36. 0x6da 48890424 MOVQ AX, 0(SP)
  37. 0x6de e800000000 CALL 0x6e3 [1:5]R_CALL:runtime.mcall
  38. if n := atomic.LoadInt32(&b); n == 1 {
  39. 0x6e3 488b442420 MOVQ 0x20(SP), AX
  40. 0x6e8 8b08 MOVL 0(AX), CX
  41. 0x6ea 83f901 CMPL $0x1, CX
  42. 0x6ed 75e2 JNE 0x6d1
  43. if a != 1 {
  44. 0x6ef 488b442428 MOVQ 0x28(SP), AX
  45. 0x6f4 833801 CMPL $0x1, 0(AX)
  46. 0x6f7 750a JNE 0x703
  47. 0x6f9 488b6c2430 MOVQ 0x30(SP), BP
  48. 0x6fe 4883c438 ADDQ $0x38, SP
  49. 0x702 c3 RET
  50. panic("fail")
  51. 0x703 488d0500000000 LEAQ 0(IP), AX [3:7]R_PCREL:type.string
  52. 0x70a 48890424 MOVQ AX, 0(SP)
  53. 0x70e 488d0500000000 LEAQ 0(IP), AX [3:7]R_PCREL:%22%22.statictmp_0
  54. 0x715 4889442408 MOVQ AX, 0x8(SP)
  55. 0x71a e800000000 CALL 0x71f [1:5]R_CALL:runtime.gopanic
  56. 0x71f 0f0b UD2
  57. func try() {
  58. 0x721 e800000000 CALL 0x726 [1:5]R_CALL:runtime.morestack_noctxt
  59. 0x726 e928ffffff JMP %22%22.try(SB)
  60.  
  61. TEXT %22%22.main(SB) gofile../path/atomic.go
  62. func main() {
  63. 0x7a2 65488b0c2500000000 MOVQ GS:0, CX [5:9]R_TLS_LE
  64. 0x7ab 483b6110 CMPQ 0x10(CX), SP
  65. 0x7af 7634 JBE 0x7e5
  66. 0x7b1 4883ec10 SUBQ $0x10, SP
  67. 0x7b5 48896c2408 MOVQ BP, 0x8(SP)
  68. 0x7ba 488d6c2408 LEAQ 0x8(SP), BP
  69. 0x7bf 31c0 XORL AX, AX
  70. for i := 0; i < n ; i++ {
  71. 0x7c1 eb10 JMP 0x7d3
  72. 0x7c3 48890424 MOVQ AX, 0(SP)
  73. try()
  74. 0x7c7 e800000000 CALL 0x7cc [1:5]R_CALL:%22%22.try
  75. for i := 0; i < n ; i++ {
  76. 0x7cc 488b0424 MOVQ 0(SP), AX
  77. 0x7d0 48ffc0 INCQ AX
  78. 0x7d3 483d00ca9a3b CMPQ $0x3b9aca00, AX
  79. 0x7d9 7ce8 JL 0x7c3
  80. 0x7db 488b6c2408 MOVQ 0x8(SP), BP
  81. 0x7e0 4883c410 ADDQ $0x10, SP
  82. 0x7e4 c3 RET
  83. func main() {
  84. 0x7e5 e800000000 CALL 0x7ea [1:5]R_CALL:runtime.morestack_noctxt
  85. 0x7ea ebb6 JMP %22%22.main(SB)
  86.  
  87. TEXT %22%22.try.func1(SB) gofile../path/atomic.go
  88. atomic.StoreInt32(&a, 1)
  89. 0x816 b801000000 MOVL $0x1, AX
  90. 0x81b 488b4c2408 MOVQ 0x8(SP), CX
  91. 0x820 8701 XCHGL AX, 0(CX)
  92. atomic.StoreInt32(&b, 1)
  93. 0x822 b801000000 MOVL $0x1, AX
  94. 0x827 488b4c2410 MOVQ 0x10(SP), CX
  95. 0x82c 8701 XCHGL AX, 0(CX)
  96. }()
  97. 0x82e c3 RET
  98.  
  99. TEXT %22%22.init(SB) gofile..<autogenerated>
  100.  
  101. 0x855 65488b0c2500000000 MOVQ GS:0, CX [5:9]R_TLS_LE
  102. 0x85e 483b6110 CMPQ 0x10(CX), SP
  103. 0x862 7646 JBE 0x8aa
  104. 0x864 4883ec08 SUBQ $0x8, SP
  105. 0x868 48892c24 MOVQ BP, 0(SP)
  106. 0x86c 488d2c24 LEAQ 0(SP), BP
  107. 0x870 0fb60500000000 MOVZX 0(IP), AX [3:7]R_PCREL:%22%22.initdone·
  108. 0x877 80f801 CMPL $0x1, AL
  109. 0x87a 7609 JBE 0x885
  110. 0x87c 488b2c24 MOVQ 0(SP), BP
  111. 0x880 4883c408 ADDQ $0x8, SP
  112. 0x884 c3 RET
  113. 0x885 7507 JNE 0x88e
  114. 0x887 e800000000 CALL 0x88c [1:5]R_CALL:runtime.throwinit
  115. 0x88c 0f0b UD2
  116. 0x88e c6050000000001 MOVB $0x1, 0(IP) [2:6]R_PCREL:%22%22.initdone·+-1
  117. 0x895 e800000000 CALL 0x89a [1:5]R_CALL:runtime.init
  118. 0x89a c6050000000002 MOVB $0x2, 0(IP) [2:6]R_PCREL:%22%22.initdone·+-1
  119. 0x8a1 488b2c24 MOVQ 0(SP), BP
  120. 0x8a5 4883c408 ADDQ $0x8, SP
  121. 0x8a9 c3 RET
  122. 0x8aa e800000000 CALL 0x8af [1:5]R_CALL:runtime.morestack_noctxt
  123. 0x8af eba4 JMP %22%22.init(SB)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement