Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SwiftとCPUレジスタ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
rikusouda
June 24, 2019
Technology
2
670
SwiftとCPUレジスタ
rikusouda
June 24, 2019
Tweet
Share
More Decks by rikusouda
See All by rikusouda
末尾再帰なら安心でしょ?って信じてたSwiftコードが落ちた夜
rikusouda
0
210
Swiftのスタック変数とCPUレジスタの関係を読み解いた
rikusouda
2
2.6k
OSSを育てながらiOSアプリでパンくずリストを実現した
rikusouda
2
5.5k
fastlaneはともだち こわくないよ
rikusouda
1
1.1k
Other Decks in Technology
See All in Technology
超初心者からでも大丈夫!オープンソース半導体の楽しみ方〜今こそ!オレオレチップをつくろう〜
keropiyo
0
110
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
470
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.5k
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
190
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
580
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
330
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
430
Digitization部 紹介資料
sansan33
PRO
1
6.8k
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
260
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
200
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
120
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Scaling GitHub
holman
464
140k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
910
The Language of Interfaces
destraynor
162
26k
How to Ace a Technical Interview
jacobian
281
24k
Transcript
SwiftͱCPUϨδελ 2019/06/24 YUMEMI.swift #1 @rikusouda
ࣗݾհ • @rikusouda (٢Ԭ༞थ) • גࣜձࣾGunosy • ϧʔτϏΞ͕͖ • WWDC19͕ॳWWDC
None
Swiftͱ CPUϨδελ
ͳͥWWDC͔ΒϨδελͷ? • WWDCʹLab͕͋ΔɻAppleͷΤϯδχΞ ʹ࣭͕Ͱ͖Δॴ • Swiftؔ࿈ͷLabߦ͖ͬͯͨ • ղܾͰ͖ͳ͔ͬͨ͜ͱ͕͋Γɺຊʹؼͬͯ ͖͔ͯΒࣗͰௐͨ
CPUϨδελͬͯԿ͚ͩͬ • ԋࢉ͢Δͱ͖ʹ͏࡞ۀྖҬ = ൚༻Ϩδελ • CPUͷ෦ʹ͋ͬͯɺϝΠϯϝϞϦΑΓܻҧ ͍ʹૣ͍ • ͨͩ͠ेݸͱ͔ɺ͕ݶΒΕ͍ͯΔ
• Ϩδελʹͳ͍σʔλΛԋࢉ͢Δͱ͖ϝΠϯ ϝϞϦ͔ΒҰ୴ϩʔυ͢Δ
ࡐͷSwiftίʔυ
͜͏͍͏ܕͷม ʮελοΫͷϝϞϦྖҬʹ֬อ ͞ΕΔʯͱ͍͏ͷ༗໊ ࡐͷSwiftίʔυ
ϝΠϯϝϞϦΘͣʹϨδελ ͚ͩͬͨ΄͏͕ޮΑ͘ͳ͍ ͦ͏ͳ͍ͬͯΔ ࡐͷSwiftίʔυ
LabͰฉ͍ͯΈͨ • SwiftͷLabʹͯ • A. SwiftίϯύΠϥνʔϜͰ୲͍ͯ͠ͳ͍ൣғɻ LLVMͷਓʹฉ͘ͱΑͦ͞͏ • LLVMͷLabʹͯ •
A. SwiftΘ͔Βͳ͍ɻCݴޠͩͱ͢ΔͱYesɻLLVM IRͱ͔ΞηϯϒϥಡΉͱ͍Ζ͍ΖΘ͔ͬͯ໘ന͍Α
LLVM IRͱΞηϯϒϥͱ http://llvm.org/devmtg/2015-10/slides/GroffLattner-SILHighLevelIR.pdf
LLVM IRͱΞηϯϒϥͱ http://llvm.org/devmtg/2015-10/slides/GroffLattner-SILHighLevelIR.pdf
LLVM IRݟͯΈΑ͏
Swiftίʔυ
swiftc -emit-ir -O test.swift > test.ll ௨ৗɺϦϦʔεϏϧυ࠷ద Խ͢ΔͷͰಉ༷ʹ࠷దԽ
None
࠷దԽ͞Ε͗͢!!
Swiftίʔυ
Swiftίʔυ ϝιουͷࢀরܦ༝ͷݺͼग़͠ʹ͠ ͯؔίʔϧ͕ͳ͘ͳΔͷΛආ͚Δ
swiftc -emit-ir -O test.swift > test.ll
LLVM IRίʔυ(barؔ)
LLVM IRίʔυ(barؔ) ͷؔΛίʔϧ݁͠ՌΛ GPPؔͷϙΠϯλ͕ʹೖ͍ͬͯΔ
LLVM IRίʔυ(barؔ) ʹΛͯ͠ɺΓΛʹ
LLVM IRίʔυ(barؔ) !MMWNTBEEXJUIPWFSqPXJͷΓ ߏମ͔Βܭࢉ݁ՌΛऔΓग़͠ɺ ͦΕΛΓͱͯ͠SFUVSO
Α͛͞
೦ͷҝΞηϯϒϥݟΑ͏ iPhoneΛఆ͠ARM64Ͱ
xcrun -sdk iphoneos swiftc - emit-assembly -O -target arm64- apple-ios12.0
test.swift > test.s ͜ͷίϚϯυ͕ϕετͳͷ͔ ࣗ৴͕ͳ͍ͷͰϚαΧϦืू
ARM64ͷ Ξηϯϒϥ
None
Y ΛҾͱͯ͠YʹඈͿ YʹGPPͷΞυϨε͕ೖ͍ͬͯΔ
Γ Y ΛYʹίϐʔ
YY ϨδελͱϦςϥϧͷՃࢉ ϝϞϦΞΫηεͳ͠
YΛΓͱͯ͠SFUVSO
SwiftͷؔͷInt ϨδελͰ͍݁ͯͨ͠
͜Ε͔Β • LLVMίʔυΛݟͯཪ͚͕Ͱ͖͍ͯͳ͍ͷͰ Γ͍ͨ • ↑͜͜·ͰͬͯiOSDCͷLTͰΓ͍ͨ
ϓϩϙʔβϧʹελʔ͍ͩ͘͞ • 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”Ͱݕࡧ͢Εग़͖ͯ·͢
·ͱΊ • Swiftͷ෦ಈ࡞ΛΓ͍ͨ߹தؒίʔυ ΛಡΉ͚ͩͰ݁ߏ͔Δɻ • ໋ྩͷ༷ͱ͔άάΕ݁ߏಡΊΔ • ίϯύΠϥͷࣝͳͯ͘͜͜·Ͱߦ͚Δ • SwiftͷIntɺҰൠతʹ࠷దԽ͋ΓͳΒϨδ
ελͰ݁͢Δ͜ͱ͕Θ͔ͬͨ
None