Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CPU命令もバイナリ
Search
Satoru Takeuchi
PRO
June 07, 2020
Technology
0
330
CPU命令もバイナリ
下記動画のテキストです
https://youtu.be/xSFawKHxjkE
Satoru Takeuchi
PRO
June 07, 2020
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
eBPF
sat
PRO
1
88
waruiBPF
sat
PRO
0
80
eBPFとwaruiBPF
sat
PRO
4
2.5k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
0
86
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
170
様々なファイルシステム
sat
PRO
0
310
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
400
ソースを読むプロセスの例
sat
PRO
22
17k
メモリマップトファイル
sat
PRO
1
160
Other Decks in Technology
See All in Technology
多様なデジタルアイデンティティを攻撃からどうやって守るのか / 20251212
ayokura
0
400
直接メモリアクセス
koba789
0
290
非CUDAの悲哀 〜Claude Code と挑んだ image to 3D “Hunyuan3D”を EVO-X2(Ryzen AI Max+395)で動作させるチャレンジ〜
hawkymisc
1
160
手動から自動へ、そしてその先へ
moritamasami
0
290
生成AIでテスト設計はどこまでできる? 「テスト粒度」を操るテーラリング術
shota_kusaba
0
630
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
470
打 造 A I 驅 動 的 G i t H u b ⾃ 動 化 ⼯ 作 流 程
appleboy
0
230
Uncertainty in the LLM era - Science, more than scale
gaelvaroquaux
0
820
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
150
グレートファイアウォールを自宅に建てよう
ctes091x
0
140
AWS CLIの新しい認証情報設定方法aws loginコマンドの実態
wkm2
6
670
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
290
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
Statistics for Hackers
jakevdp
799
230k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Making Projects Easy
brettharned
120
6.5k
Music & Morning Musume
bryan
46
7k
Building an army of robots
kneath
306
46k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
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