Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SwiftとCPUレジスタ

 SwiftとCPUレジスタ

rikusouda

June 24, 2019
Tweet

More Decks by rikusouda

Other Decks in Technology

Transcript

  1. SwiftͱCPUϨδελ
    2019/06/24 YUMEMI.swift #1
    @rikusouda

    View Slide

  2. ࣗݾ঺հ
    • @rikusouda (٢Ԭ༞थ)
    • גࣜձࣾGunosy
    • ϧʔτϏΞ͕޷͖
    • WWDC19͕ॳWWDC

    View Slide

  3. View Slide

  4. Swiftͱ
    CPUϨδελ

    View Slide

  5. ͳͥWWDC͔ΒϨδελͷ࿩?
    • WWDCʹ͸Lab͕͋ΔɻAppleͷΤϯδχΞ
    ʹ࣭໰͕Ͱ͖Δ৔ॴ
    • Swiftؔ࿈ͷLabߦ͖ͬͯͨ
    • ղܾͰ͖ͳ͔ͬͨ͜ͱ͕͋Γɺ೔ຊʹؼͬͯ
    ͖͔ͯΒࣗ෼Ͱௐ΂ͨ

    View Slide

  6. CPUϨδελͬͯԿ͚ͩͬ
    • ԋࢉ͢Δͱ͖ʹ࢖͏࡞ۀྖҬ = ൚༻Ϩδελ
    • CPUͷ಺෦ʹ͋ͬͯɺϝΠϯϝϞϦΑΓܻҧ
    ͍ʹૣ͍
    • ͨͩ͠਺ेݸͱ͔ɺ਺͕ݶΒΕ͍ͯΔ
    • Ϩδελʹͳ͍σʔλΛԋࢉ͢Δͱ͖͸ϝΠϯ
    ϝϞϦ͔ΒҰ୴ϩʔυ͢Δ

    View Slide

  7. ୊ࡐͷSwiftίʔυ

    View Slide

  8. ͜͏͍͏஋ܕͷม਺͸
    ʮελοΫͷϝϞϦྖҬʹ֬อ
    ͞ΕΔʯͱ͍͏ͷ͸༗໊
    ୊ࡐͷSwiftίʔυ

    View Slide

  9. ϝΠϯϝϞϦ࢖ΘͣʹϨδελ
    ͚ͩ࢖ͬͨ΄͏͕ޮ཰Α͘ͳ͍
    ͦ͏ͳ͍ͬͯΔ
    ୊ࡐͷSwiftίʔυ

    View Slide

  10. LabͰฉ͍ͯΈͨ
    • SwiftͷLabʹͯ
    • A. SwiftίϯύΠϥνʔϜͰ͸୲౰͍ͯ͠ͳ͍ൣғɻ
    LLVMͷਓʹฉ͘ͱΑͦ͞͏
    • LLVMͷLabʹͯ
    • A. Swift͸Θ͔Βͳ͍ɻCݴޠͩͱ͢ΔͱYesɻLLVM
    IRͱ͔ΞηϯϒϥಡΉͱ͍Ζ͍ΖΘ͔ͬͯ໘ന͍Α

    View Slide

  11. LLVM IRͱΞηϯϒϥͱ͸
    http://llvm.org/devmtg/2015-10/slides/GroffLattner-SILHighLevelIR.pdf

    View Slide

  12. LLVM IRͱΞηϯϒϥͱ͸
    http://llvm.org/devmtg/2015-10/slides/GroffLattner-SILHighLevelIR.pdf

    View Slide

  13. LLVM IRݟͯΈΑ͏

    View Slide

  14. Swiftίʔυ

    View Slide

  15. swiftc -emit-ir -O test.swift > test.ll
    ௨ৗɺϦϦʔεϏϧυ͸࠷ద
    Խ͢ΔͷͰಉ༷ʹ࠷దԽ

    View Slide

  16. View Slide

  17. ࠷దԽ͞Ε͗͢!!

    View Slide

  18. Swiftίʔυ

    View Slide

  19. Swiftίʔυ
    ϝιουͷࢀরܦ༝ͷݺͼग़͠ʹ͠
    ͯؔ਺ίʔϧ͕ͳ͘ͳΔͷΛආ͚Δ

    View Slide

  20. swiftc -emit-ir -O test.swift > test.ll

    View Slide

  21. LLVM IRίʔυ(barؔ਺಺)

    View Slide

  22. LLVM IRίʔυ(barؔ਺಺)
    ͷؔ਺Λίʔϧ݁͠ՌΛ΁
    GPPؔ਺ͷϙΠϯλ͕ʹೖ͍ͬͯΔ

    View Slide

  23. LLVM IRίʔυ(barؔ਺಺)
    ʹΛ଍ͯ͠ɺ໭Γ஋Λʹ

    View Slide

  24. LLVM IRίʔυ(barؔ਺಺)
    !MMWNTBEEXJUIPWFSqPXJͷ໭Γ஋
    ߏ଄ମ͔Βܭࢉ݁ՌΛऔΓग़͠ɺ
    ͦΕΛ໭Γ஋ͱͯ͠SFUVSO

    View Slide

  25. Α͛͞

    View Slide

  26. ೦ͷҝΞηϯϒϥ΋ݟΑ͏

    iPhoneΛ૝ఆ͠ARM64Ͱ

    View Slide

  27. xcrun -sdk iphoneos swiftc -
    emit-assembly -O -target arm64-
    apple-ios12.0 test.swift >
    test.s
    ͜ͷίϚϯυ͕ϕετͳͷ͔
    ࣗ৴͕ͳ͍ͷͰϚαΧϦืू

    View Slide

  28. ARM64ͷ
    Ξηϯϒϥ

    View Slide

  29. View Slide

  30. Y
    ΛҾ਺ͱͯ͠YʹඈͿ
    Yʹ͸GPPͷΞυϨε͕ೖ͍ͬͯΔ

    View Slide

  31. ໭Γ஋ Y
    ΛYʹίϐʔ

    View Slide

  32. YY
    ϨδελͱϦςϥϧͷՃࢉ
    ϝϞϦΞΫηεͳ͠

    View Slide

  33. YΛ໭Γ஋ͱͯ͠SFUVSO

    View Slide

  34. Swiftͷؔ਺಺ͷInt͸
    ϨδελͰ׬͍݁ͯͨ͠

    View Slide

  35. ͜Ε͔Β
    • LLVMίʔυΛݟͯཪ෇͚͕Ͱ͖͍ͯͳ͍ͷͰ
    ΍Γ͍ͨ
    • ↑͜͜·Ͱ΍ͬͯiOSDCͷLTͰ஻Γ͍ͨ

    View Slide

  36. ϓϩϙʔβϧʹελʔ͍ͩ͘͞
    • SwiftͷελοΫม਺ͱCPUϨδελͷؔ܎ΛಡΈղ͍ͨ
    • https://fortee.jp/iosdc-japan-2019/proposal/
    c2a89fff-ce66-4821-b2d4-4b7b6ff293d5
    • Swiftͷ஌ࣝΛ࢖ͬͯC++ͷੈքʹඈͼࠐ΋͏
    • https://fortee.jp/iosdc-japan-2019/proposal/
    c39e331a-8c70-42ef-b58e-38f798f40295
    • “rikusouda”Ͱݕࡧ͢Ε͹ग़͖ͯ·͢

    View Slide

  37. ·ͱΊ
    • Swiftͷ಺෦ಈ࡞Λ஌Γ͍ͨ৔߹͸தؒίʔυ
    ΛಡΉ͚ͩͰ݁ߏ෼͔Δɻ
    • ໋ྩͷ࢓༷ͱ͔άάΕ͹݁ߏಡΊΔ
    • ίϯύΠϥͷ஌ࣝͳͯ͘΋͜͜·Ͱ͸ߦ͚Δ
    • SwiftͷInt͸ɺҰൠతʹ࠷దԽ͋ΓͳΒ͹Ϩδ
    ελͰ׬݁͢Δ͜ͱ͕Θ͔ͬͨ

    View Slide

  38. View Slide