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
CPU命令もバイナリ
Search
Satoru Takeuchi
PRO
June 07, 2020
Technology
0
320
CPU命令もバイナリ
下記動画のテキストです
https://youtu.be/xSFawKHxjkE
Satoru Takeuchi
PRO
June 07, 2020
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
様々なファイルシステム
sat
PRO
0
270
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
340
ソースを読むプロセスの例
sat
PRO
20
16k
メモリマップトファイル
sat
PRO
1
140
「Linux」という言葉が指すもの
sat
PRO
4
230
APIとABIの違い
sat
PRO
5
210
ファイルシステムへのアクセス方法
sat
PRO
0
88
ファイルシステム
sat
PRO
1
79
低レイヤソフトウェア技術者が YouTuberとして食っていこうとした話
sat
PRO
7
6.2k
Other Decks in Technology
See All in Technology
AIを使ってテストを楽にする
kworkdev
PRO
0
330
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
14
82k
Azure Well-Architected Framework入門
tomokusaba
1
150
AIでデータ活用を加速させる取り組み / Leveraging AI to accelerate data utilization
okiyuki99
6
1.5k
東京大学「Agile-X」のFPGA AIデザインハッカソンを制したソニーのAI最適化
sony
0
170
実践マルチモーダル検索!
shibuiwilliam
1
440
RemoteFunctionを使ったコロケーション
mkazutaka
1
160
20251024_TROCCO/COMETAアップデート紹介といくつかデモもやります!_#p_UG 東京:データ活用が進む組織の作り方
soysoysoyb
0
140
251029 JAWS-UG AI/ML 退屈なことはQDevにやらせよう
otakensh
0
110
Open Table Format (OTF) が必要になった背景とその機能 (2025.10.28)
simosako
2
520
頭部ふわふわ浄酔器
uyupun
0
240
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
230
Featured
See All Featured
Navigating Team Friction
lara
190
15k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.9k
The Invisible Side of Design
smashingmag
302
51k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Writing Fast Ruby
sferik
630
62k
Code Review Best Practice
trishagee
72
19k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
How to train your dragon (web standard)
notwaldorf
97
6.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Faster Mobile Websites
deanohume
310
31k
For a Future-Friendly Web
brad_frost
180
10k
Transcript
CPU命令もバイナリ Jun 7th, 2020 Satoru Takeuchi Twitter: satoru_takeuchi 1
もくじ • CPU命令実行のしくみ • x86_64アーキテクチャのCPU命令 • 実行ファイルの中身を見る • まとめ 2
もくじ • CPU命令実行のしくみ • x86_64アーキテクチャのCPU命令 • 実行ファイルの中身を見る 3
前置き • すべてのデータはバイナリ(別の回で説明済) ◦ 整数 ◦ 文字、文字列 • CPU命令もデータ ◦
1つ以上のCPU命令のかたまりを一般に「コード」と呼ぶ ◦ コードの指す意味は広いので、ここでは「 CPU命令」と書く 4
CPU命令実行のしくみ: 初期状態 5 ストレージデバイス (HDD, SSDなど) メモリ CPU 実行ファイル CPU命令列
レジスタ データ
実行ファイルのメモリへのロード 6 ストレージデバイス (HDD, SSDなど) メモリ CPU 実行ファイル CPU命令列 レジスタ
データ CPU命令列 データ コピー
CPUへの命令の読み込み 7 ストレージデバイス (HDD, SSDなど) メモリ CPU 実行ファイル CPU命令 レジスタ
データ CPU命令列 データ 1命令読む CPU命令
命令実行 8 ストレージデバイス (HDD, SSDなど) メモリ CPU 実行ファイル CPU命令 レジスタ
データ CPU命令列 データ CPU命令 やることは命令によって違う • データのコピー ◦ メモリ⇔レジスタ ◦ メモリ⇔メモリ ◦ レジスタ⇔レジスタ • 計算 どういうバイト列がなにをする命令なのかは CPUアーキテクチャによって異なる
次の命令を読み出す(以下くりかえし) 9 ストレージデバイス (HDD, SSDなど) メモリ CPU 実行ファイル CPU命令 レジスタ
データ CPU命令列 データ CPU命令 1命令読む
もくじ • CPU命令実行のしくみ • x86_64アーキテクチャのCPU命令 • 実行ファイルの中身を見る • まとめ 10
X86_64アーキテクチャのCPU命令 • IntelのCPUについては同社公式サイトに全命令リファレンスがある https://software.intel.com/content/www/us/en/develop/download/intel-64-and-ia-32-architectures-sdm-combined-volumes-2a-2b- 2c-and-2d-instruction-set-reference-a-z.html • 2000ページ以上あるので全部読もうとすると死ぬ ◦ 読破を目指さず、必要に応じて参照しましょう •
とりあえず覚えておけばいい命令 ◦ Mov: データのコピー ▪ メモリ⇔レジスタ間、メモリ⇔メモリ間、レジスタ⇔レジスタ間、なんでも ◦ Add: 足し算 11
もくじ • CPU命令実行のしくみ • x86_64アーキテクチャのCPU命令 • 実行ファイルの中身を見る • まとめ 12
演習 • 使うもの ◦ (自作)Addプログラム: 1と2を足した結果を返すだけ ◦ Objdump: 実行ファイルの中身を読む •
やること ◦ Objdumpでaddプログラムの中身を見る ◦ 1と2を足しているコードを見つける ◦ コードがバイナリデータに対応していることを確認 13
もくじ • CPU命令実行のしくみ • x86_64アーキテクチャのCPU命令 • 実行ファイルの中身を見る • まとめ 14
まとめ • 実行ファイルの中に命令列をあらわすバイナリデータが入っている • バイナリデータと命令の対応はCPUアーキテクチャによって違う • IntelのCPUについては対応表が公開されている • objdumpコマンドによって実行ファイル内の命令列を見られる 15