Submit Search
Upload
ハロー・ワールド入門(オープンソースカンファレンス2015 Tokyo/Spring ライトニングトーク)
•
28 likes
•
6,763 views
K
kozossakai
Follow
OSCライトニングトーク「ハロー・ワールド入門」 オープンソースカンファレンス2015 Tokyo/Spring
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 76
Download now
Download to read offline
Recommended
続・ハロー・ワールド入門(オープンソースカンファレンス2016 Tokyo/Spring ライトニングトーク)
続・ハロー・ワールド入門(オープンソースカンファレンス2016 Tokyo/Spring ライトニングトーク)
kozossakai
ISAC Tokyo 2014 宇宙の歩き方 Space Travel Map
ISAC Tokyo 2014 宇宙の歩き方 Space Travel Map
Daichi OBINATA
VIOPS04: Skip Graphの基礎知識
VIOPS04: Skip Graphの基礎知識
VIOPS Virtualized Infrastructure Operators group ARCHIVES
WSDM2016報告会−参加報告#yjwsdm
WSDM2016報告会−参加報告#yjwsdm
Yahoo!デベロッパーネットワーク
ハードウエア教材における「失敗」の意義
ハードウエア教材における「失敗」の意義
Junichi Akita
クックパッッド風UIを用いた趣味発表の場を作るアプリ (CYTA)
クックパッッド風UIを用いた趣味発表の場を作るアプリ (CYTA)
stucon
シャワーLT
シャワーLT
Takuya Noaki
LT @YAPC::Asia 2012 LTThon
LT @YAPC::Asia 2012 LTThon
maka2donzoko
Recommended
続・ハロー・ワールド入門(オープンソースカンファレンス2016 Tokyo/Spring ライトニングトーク)
続・ハロー・ワールド入門(オープンソースカンファレンス2016 Tokyo/Spring ライトニングトーク)
kozossakai
ISAC Tokyo 2014 宇宙の歩き方 Space Travel Map
ISAC Tokyo 2014 宇宙の歩き方 Space Travel Map
Daichi OBINATA
VIOPS04: Skip Graphの基礎知識
VIOPS04: Skip Graphの基礎知識
VIOPS Virtualized Infrastructure Operators group ARCHIVES
WSDM2016報告会−参加報告#yjwsdm
WSDM2016報告会−参加報告#yjwsdm
Yahoo!デベロッパーネットワーク
ハードウエア教材における「失敗」の意義
ハードウエア教材における「失敗」の意義
Junichi Akita
クックパッッド風UIを用いた趣味発表の場を作るアプリ (CYTA)
クックパッッド風UIを用いた趣味発表の場を作るアプリ (CYTA)
stucon
シャワーLT
シャワーLT
Takuya Noaki
LT @YAPC::Asia 2012 LTThon
LT @YAPC::Asia 2012 LTThon
maka2donzoko
Amazon Machine Learing と機械学習
Amazon Machine Learing と機械学習
Kei Hirata
向平卓矢について - 2015/12/23 ITエンジニア高専 逆求人
向平卓矢について - 2015/12/23 ITエンジニア高専 逆求人
Takuya Mukohira
スタートアップできなかった話
スタートアップできなかった話
MontBlanc. Tsukuda
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
Yasuhiro Yoshimura
「Googleを支える技術」の解説 2010.08.23
「Googleを支える技術」の解説 2010.08.23
Minoru Chikamune
Journal Communication - Part I
Journal Communication - Part I
Naren P.R.
自己紹介
自己紹介
Fuki Ogawa
Cross2015自己紹介LT資料
Cross2015自己紹介LT資料
Horiguchi Seito
ライトニングトークの作り方
ライトニングトークの作り方
Daisuke Masuhara
自己紹介LT「俺の迷走っぷり」
自己紹介LT「俺の迷走っぷり」
Ken Muryoi
Tf勉強会(5)
Tf勉強会(5)
tak9029
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
Yasuhiro Yoshimura
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
Kenji Hiranabe
20160612 第34回cv勉強会@関東 コンピュテーショナルフォトグラフィ
20160612 第34回cv勉強会@関東 コンピュテーショナルフォトグラフィ
Kyohei Unno
Chainer GTC 2016
Chainer GTC 2016
Shohei Hido
Cvim saisentan-cvpr-hyper depth
Cvim saisentan-cvpr-hyper depth
tomoaki0705
テーマ・プラグイン開発の光と闇 #wctokyo
テーマ・プラグイン開発の光と闇 #wctokyo
Hidekazu Ishikawa
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
Etsuji Nakai
Ltサンプルスライド
Ltサンプルスライド
Tsukasa Saeki
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
Hijili Kosugi
バイナリ駄洒落コンテスト
バイナリ駄洒落コンテスト
kozossakai
spinsn - CPUの特殊命令の仕様推定と実装の競技
spinsn - CPUの特殊命令の仕様推定と実装の競技
kozossakai
More Related Content
Viewers also liked
Amazon Machine Learing と機械学習
Amazon Machine Learing と機械学習
Kei Hirata
向平卓矢について - 2015/12/23 ITエンジニア高専 逆求人
向平卓矢について - 2015/12/23 ITエンジニア高専 逆求人
Takuya Mukohira
スタートアップできなかった話
スタートアップできなかった話
MontBlanc. Tsukuda
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
Yasuhiro Yoshimura
「Googleを支える技術」の解説 2010.08.23
「Googleを支える技術」の解説 2010.08.23
Minoru Chikamune
Journal Communication - Part I
Journal Communication - Part I
Naren P.R.
自己紹介
自己紹介
Fuki Ogawa
Cross2015自己紹介LT資料
Cross2015自己紹介LT資料
Horiguchi Seito
ライトニングトークの作り方
ライトニングトークの作り方
Daisuke Masuhara
自己紹介LT「俺の迷走っぷり」
自己紹介LT「俺の迷走っぷり」
Ken Muryoi
Tf勉強会(5)
Tf勉強会(5)
tak9029
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
Yasuhiro Yoshimura
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
Kenji Hiranabe
20160612 第34回cv勉強会@関東 コンピュテーショナルフォトグラフィ
20160612 第34回cv勉強会@関東 コンピュテーショナルフォトグラフィ
Kyohei Unno
Chainer GTC 2016
Chainer GTC 2016
Shohei Hido
Cvim saisentan-cvpr-hyper depth
Cvim saisentan-cvpr-hyper depth
tomoaki0705
テーマ・プラグイン開発の光と闇 #wctokyo
テーマ・プラグイン開発の光と闇 #wctokyo
Hidekazu Ishikawa
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
Etsuji Nakai
Ltサンプルスライド
Ltサンプルスライド
Tsukasa Saeki
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
Hijili Kosugi
Viewers also liked
(20)
Amazon Machine Learing と機械学習
Amazon Machine Learing と機械学習
向平卓矢について - 2015/12/23 ITエンジニア高専 逆求人
向平卓矢について - 2015/12/23 ITエンジニア高専 逆求人
スタートアップできなかった話
スタートアップできなかった話
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
「Googleを支える技術」の解説 2010.08.23
「Googleを支える技術」の解説 2010.08.23
Journal Communication - Part I
Journal Communication - Part I
自己紹介
自己紹介
Cross2015自己紹介LT資料
Cross2015自己紹介LT資料
ライトニングトークの作り方
ライトニングトークの作り方
自己紹介LT「俺の迷走っぷり」
自己紹介LT「俺の迷走っぷり」
Tf勉強会(5)
Tf勉強会(5)
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
アジャイル開発の現在・過去・未来~今を知り、源流を訪ね、先を見据える~
20160612 第34回cv勉強会@関東 コンピュテーショナルフォトグラフィ
20160612 第34回cv勉強会@関東 コンピュテーショナルフォトグラフィ
Chainer GTC 2016
Chainer GTC 2016
Cvim saisentan-cvpr-hyper depth
Cvim saisentan-cvpr-hyper depth
テーマ・プラグイン開発の光と闇 #wctokyo
テーマ・プラグイン開発の光と闇 #wctokyo
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
Ltサンプルスライド
Ltサンプルスライド
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
超初心者向け・オンライン勉強会のススメ(WordCamp Tokyo 2016 LT スライド)
More from kozossakai
バイナリ駄洒落コンテスト
バイナリ駄洒落コンテスト
kozossakai
spinsn - CPUの特殊命令の仕様推定と実装の競技
spinsn - CPUの特殊命令の仕様推定と実装の競技
kozossakai
Step-Oriented Programming による任意コード実行の可能性
Step-Oriented Programming による任意コード実行の可能性
kozossakai
Possibility of arbitrary code execution by Step-Oriented Programming
Possibility of arbitrary code execution by Step-Oriented Programming
kozossakai
アセンブラ漢文
アセンブラ漢文
kozossakai
アセンブラ短歌 (AVTOKYO2013.5 日本語版)
アセンブラ短歌 (AVTOKYO2013.5 日本語版)
kozossakai
Assembly Language Tanka (AVTOKYO2013.5 English version)
Assembly Language Tanka (AVTOKYO2013.5 English version)
kozossakai
アセンブラ短歌(TechLION vol.15 ライトニングトーク)
アセンブラ短歌(TechLION vol.15 ライトニングトーク)
kozossakai
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
kozossakai
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
kozossakai
バイナリかるた(アーキテクチャかるた・完全版)
バイナリかるた(アーキテクチャかるた・完全版)
kozossakai
バイナリかるた(アーキテクチャかるた)
バイナリかるた(アーキテクチャかるた)
kozossakai
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
kozossakai
アセンブラ短歌(オープンソースカンファレンス2013 Tokyo/Fall ライトニングトーク)
アセンブラ短歌(オープンソースカンファレンス2013 Tokyo/Fall ライトニングトーク)
kozossakai
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
kozossakai
More from kozossakai
(15)
バイナリ駄洒落コンテスト
バイナリ駄洒落コンテスト
spinsn - CPUの特殊命令の仕様推定と実装の競技
spinsn - CPUの特殊命令の仕様推定と実装の競技
Step-Oriented Programming による任意コード実行の可能性
Step-Oriented Programming による任意コード実行の可能性
Possibility of arbitrary code execution by Step-Oriented Programming
Possibility of arbitrary code execution by Step-Oriented Programming
アセンブラ漢文
アセンブラ漢文
アセンブラ短歌 (AVTOKYO2013.5 日本語版)
アセンブラ短歌 (AVTOKYO2013.5 日本語版)
Assembly Language Tanka (AVTOKYO2013.5 English version)
Assembly Language Tanka (AVTOKYO2013.5 English version)
アセンブラ短歌(TechLION vol.15 ライトニングトーク)
アセンブラ短歌(TechLION vol.15 ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
組込みOSを作ってみよう!(オープンソースカンファレンス内セミナー資料)
バイナリかるた(アーキテクチャかるた・完全版)
バイナリかるた(アーキテクチャかるた・完全版)
バイナリかるた(アーキテクチャかるた)
バイナリかるた(アーキテクチャかるた)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
バイナリで遊ぼう(オープンソースカンファレンス2014 Tokyo/Fall ライトニングトーク)
アセンブラ短歌(オープンソースカンファレンス2013 Tokyo/Fall ライトニングトーク)
アセンブラ短歌(オープンソースカンファレンス2013 Tokyo/Fall ライトニングトーク)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
アセンブラ短歌(第2回APASEC+第2期サイボウズ・ラボユース合同勉強会)
ハロー・ワールド入門(オープンソースカンファレンス2015 Tokyo/Spring ライトニングトーク)
1.
ハロー・ワールド 入門 坂井弘亮 (KOZOSプロジェクト)
2.
早速ですが早速ですが早速ですが早速ですが
3.
バイナリカレンダー2015 あります http://kozos.jp/
4.
バイナリカレンダー とは何か?
5.
普通のカレンダー:風景や人物がテーマ バイナリカレンダー:バイナリダンプがテーマ
6.
普通のカレンダー:風景や人物がテーマ バイナリカレンダー:バイナリダンプがテーマ 近年のデジタル世代のためのカレンダー
7.
こんな感じです
8.
9.
バイナリダンプ (x86-64機械語) 日付 (もちろん16進数) <- 西暦(もちろん16進数)
10.
実物
11.
12.
拡大
13.
リビングに飾ると こんな感じ
14.
15.
バイナリ カレンダー (サーバ版)
16.
(サーバ版なので) ジュリアン デート付き (もちろん16進)
17.
アーキテクチャ一覧 1月:Alpha 7月:VAX 2月:PowerPC8月:S/390 3月:SPARC 9月:SH64 4月:PA-RISC
10月:MMIX 5月:IA-64 11月:PDP-11 6月:x86-64 12月:680x0 (えっそれってサーバじゃないでしょ的なアーキも入っています. ごめんアーキ足りなかったので64ビットアーキとか適当に入れました)
18.
そんなの興味無いよという かたもいるかと思うのですが
19.
そんな一部のかたに 朗報です
20.
今年は マイコン版も あります
21.
マイコン版では 2進数 表記付き
22.
アーキテクチャ一覧 1月:AVR 7月:RL78 2月:SH 8月:V850 3月:MicroBlaze9月:i960 4月:ARM
10月:Thumb 5月:FR-V 11月:Blackfin 6月:68HC11 12月:MIPS16
23.
ここで 7月31日に注目
24.
25.
7月31日は 2進数では 111月 11111日
26.
11月11日を バイナリの日とする 考えがあるようですが
27.
7月31日こそ バイナリの日にふさわしい
28.
7月31日こそ バイナリの日にふさわしい (新歴でのバイナリの日)
29.
バイナリカレンダーに ついては こちらを参照
30.
「バイナリで遊ぼう!」
31.
おそらく昨年出た技術書の 中で2番目くらいに変な本 (自己評価)
32.
おそらく昨年出た技術書の 中で2番目くらいに変な本 (自己評価) 一番はたぶんこれ 「アセンブラ短歌の世界」
33.
斜め上を行くような 本ばかり書いてるような (気のせい?)
34.
そんなわけで 今年の目標
35.
マニアックな本は もう卒業だ! 今年こそは 一般向け・入門者向けの 本を書いてみたい!
36.
万人ウケする本を書いて ヒットを飛ばしたい! それにはやっぱり入門書だ!
37.
入門書と言えば これですよね
38.
#include <stdio.h> int main() { printf("Hello
World!¥n"); return 0; }
39.
実行結果
40.
Hello World!
41.
いわゆる 「ハロー・ワールド」
42.
ハロー・ワールドについて たまに言われること
43.
「このプログラムについて レポートを書けと言われれば A4用紙で5枚でも6枚でも 書ける!」 (要するに奥が深い)
44.
それほど奥が深い 「ハロー・ワールド」 ですが
45.
だったらハロー・ワールドだけで 1冊の本が書けるんじゃないかと
46.
ということで 今書いている本
47.
「ハロー・ワールド入門」
48.
「ハロー・ワールド入門」とは何か 300ページ(予定)に渡って ハロー・ワールド「だけ」について 延々と説明してある ハロー・ワールドの入門書 (つまりK&Rの前に読むべき)
49.
誰もが書いたことのある 「ハロー・ワールド」 を題材にしているので
50.
これが万人ウケ しないはずが無い!
51.
注意
52.
「ハロー・ワールド」の 入門書です 「ハロー・ワールド」から始まる C言語の入門書ではありません
53.
出てくるプログラムの リストはもちろん これだけです
54.
#include <stdio.h> int main() { printf("Hello
World!¥n"); return 0; }
55.
概要
56.
第1章 「ハロー・ワールドを 動的解析してみよう」
57.
(内容) ハロー・ワールドの動作をデバッガで 追いかけてprintf()の中まで 入って解析して (デバッグ情報が付いてないので もちろんアセンブラレベルで) writeシステムコールの 呼び出しまで動的解析してみる
58.
第2章 「main()が呼ばれる前と main()から返る先を 解析しよう」
59.
(内容) main()関数が呼ばれる前のスタート アップとmain()関数から戻った後の _exit()までの処理をデバッガと 逆アセンブラを駆使して解析 (もちろんアセンブラレベルで)
60.
第3章 「標準ストリームの処理を 解析しよう」
61.
(内容) printf()系のライブラリ関数の ストリーム処理を,glibcの ソースを読んでひたすら解析 してwrite()されるまでにどのような バッファリング処理が行われて いるのかを知る
62.
第4章 「可変長引数の処理を 解析しよう」
63.
(内容) printf()の可変長引数の処理の 実現方法を,逆アセンブルした 結果をベースにして解析して アセンブラレベルで理解する
64.
第5章 「プログラムの実行処理を 解析しよう」
65.
(内容) プログラムの起動時に行われる 処理の内容をLinuxカーネルの ソースコードを読んでexecve() システムコールの処理を読んで 理解する
66.
第6章 「コンパイルと プリプロセッサの処理」
67.
(内容) コンパイル時のログを見て コンパイルオプションや最適化, stdio.hのインクルード処理や プリプロセッサの処理を知り, コンパイル時に何が行われて いるのかやライブラリの構成を 具体的に理解する
68.
第7章 「様々なアーキテクチャでの ハロー・ワールド」
69.
(内容) x86やLinux以外の様々な アーキテクチャや環境 (各種RISCアーキやマイコンなど) でのハロー・ワールドを エミュレータ等を用いて検証し アーキや環境ごとの特徴を知る
70.
ハロー・ワールドを知ることで コンパイラが何をやっているのか とかプログラムがどうやって実行 されているのかとかヘッダファイル やライブラリがどんなふうに使われ ているのかとかが理解できるはず (多分)
71.
関連OSS一覧 gcc binutils gdb Linuxカーネル glibcソースコード FreeBSD その他多数
72.
どうでしょうか
73.
ハロー・ワールドに 入門してみたく なったことかと思います
74.
みんなで ハロー・ワールドで 入門しよう!
75.
みんなで ハロー・ワールドで 入門しよう! に
76.
どうもありがとう ございました
Download now