swift开发知识收集

汇编窥探Swift底层(六):数组

2020-03-01  本文已影响0人  冰风v落叶

窥探数组的内存

var arr = [7,9,6,3,8]
print(MemoryLayout.stride(ofValue: arr)) 打印出来是8个字节
TestSwift`main:
    0x100001380 <+0>:   pushq  %rbp
    0x100001381 <+1>:   movq   %rsp, %rbp
    0x100001384 <+4>:   subq   $0x10, %rsp
    0x100001388 <+8>:   movq   0x4ce1(%rip), %rax        ; (void *)0x00007fff8feeaa88: type metadata for Swift.Int
->  0x10000138f <+15>:  movl   $0x5, %ecx
    0x100001394 <+20>:  movl   %edi, -0x4(%rbp)
    0x100001397 <+23>:  movq   %rcx, %rdi
    0x10000139a <+26>:  movq   %rsi, -0x10(%rbp)
    0x10000139e <+30>:  movq   %rax, %rsi
    0x1000013a1 <+33>:  callq  0x10000548a               ; symbol stub for: Swift._allocateUninitializedArray<A>(Builtin.Word) -> (Swift.Array<A>, Builtin.RawPointer)
    0x1000013a6 <+38>:  movq   0x4cc3(%rip), %rsi        ; (void *)0x00007fff8feeaa88: type metadata for Swift.Int
    0x1000013ad <+45>:  movq   $0x7, (%rdx)
    0x1000013b4 <+52>:  movq   $0x9, 0x8(%rdx)
    0x1000013bc <+60>:  movq   $0x6, 0x10(%rdx)
    0x1000013c4 <+68>:  movq   $0x3, 0x18(%rdx)
    0x1000013cc <+76>:  movq   $0x8, 0x20(%rdx)
    0x1000013d4 <+84>:  movq   %rax, %rdi
    0x1000013d7 <+87>:  callq  0x100005436               ; symbol stub for: Swift.Array.init(arrayLiteral: A...) -> Swift.Array<A>
    0x1000013dc <+92>:  xorl   %r8d, %r8d
    0x1000013df <+95>:  movq   %rax, 0x5e02(%rip)        ; TestSwift.arr : Swift.Array<Swift.Int>
    0x1000013e6 <+102>: movl   %r8d, %eax
    0x1000013e9 <+105>: addq   $0x10, %rsp
    0x1000013ed <+109>: popq   %rbp
    0x1000013ee <+110>: retq   
(lldb) register read rax
 rax = 0x00000001034000f0
(lldb) x/10xg 0x00000001034000f0
0x1034000f0: 0x00007fff9cc33260 0x0000000000000002
0x103400100: 0x0000000000000005 0x000000000000000a
0x103400110: 0x0000000000000007 0x0000000000000009
0x103400120: 0x0000000000000006 0x0000000000000003
0x103400130: 0x0000000000000008 0x0000000000000000
上一篇 下一篇

猜你喜欢

热点阅读