Submit Search
Upload
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
•
1 like
•
1,516 views
7shi
Follow
V6インタプリタなどのLTです。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 27
Download now
Download to read offline
Recommended
emruby: ブラウザで動くRuby
emruby: ブラウザで動くRuby
mametter
IGDA 日本 SIG-GLOCALIZATION GDC2012報告会
IGDA 日本 SIG-GLOCALIZATION GDC2012報告会
Self Employed
Hashicorpツールズ
Hashicorpツールズ
Uchio Kondo
Making Editor written in Ruby version 20160611
Making Editor written in Ruby version 20160611
Langur
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
Chefについて数週間勉強してみた
Chefについて数週間勉強してみた
Akira Kaneda
マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介
mametter
ICSをビルドしてみた
ICSをビルドしてみた
kinneko
Recommended
emruby: ブラウザで動くRuby
emruby: ブラウザで動くRuby
mametter
IGDA 日本 SIG-GLOCALIZATION GDC2012報告会
IGDA 日本 SIG-GLOCALIZATION GDC2012報告会
Self Employed
Hashicorpツールズ
Hashicorpツールズ
Uchio Kondo
Making Editor written in Ruby version 20160611
Making Editor written in Ruby version 20160611
Langur
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
Chefについて数週間勉強してみた
Chefについて数週間勉強してみた
Akira Kaneda
マニアックなRuby 2.7新機能紹介
マニアックなRuby 2.7新機能紹介
mametter
ICSをビルドしてみた
ICSをビルドしてみた
kinneko
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
晃 遠山
VimM#3
VimM#3
Yuki Akamatsu
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書く
mametter
Ansibleハンズオン勉強会
Ansibleハンズオン勉強会
Takahisa Iwamoto
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
Ryo Shibayama
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
Kazuhide Maruyama
俺のZabbixがこんなに可愛いわけがない
俺のZabbixがこんなに可愛いわけがない
Seiichiro Ishida
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
Infrastructure as codeのススメ
Infrastructure as codeのススメ
kanji htmt
webアプリケーションフレームワークの話
webアプリケーションフレームワークの話
Yoshihiro Ura
Real World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話
侑弥 濱田
Flowtype Introduction
Flowtype Introduction
Teppei Sato
Osoljp201204
Osoljp201204
Masataka Tsukamoto
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
晃 遠山
OSC 2011 KeySnail
OSC 2011 KeySnail
Masafumi Oyamada
運用に効く!JVMオプション三選
運用に効く!JVMオプション三選
Kazuhiro Oinuma
エディタ戦争
エディタ戦争
Akira Hagiwara
Closure Compiler Updates for ES6
Closure Compiler Updates for ES6
Teppei Sato
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
mametter
Unixファイルシステムの歴史
Unixファイルシステムの歴史
magoroku Yamamoto
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話
kanorimon
More Related Content
What's hot
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
晃 遠山
VimM#3
VimM#3
Yuki Akamatsu
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書く
mametter
Ansibleハンズオン勉強会
Ansibleハンズオン勉強会
Takahisa Iwamoto
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
Ryo Shibayama
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
Kazuhide Maruyama
俺のZabbixがこんなに可愛いわけがない
俺のZabbixがこんなに可愛いわけがない
Seiichiro Ishida
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
Infrastructure as codeのススメ
Infrastructure as codeのススメ
kanji htmt
webアプリケーションフレームワークの話
webアプリケーションフレームワークの話
Yoshihiro Ura
Real World PHP in pixiv
Real World PHP in pixiv
Kenta USAMI
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話
侑弥 濱田
Flowtype Introduction
Flowtype Introduction
Teppei Sato
Osoljp201204
Osoljp201204
Masataka Tsukamoto
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
晃 遠山
OSC 2011 KeySnail
OSC 2011 KeySnail
Masafumi Oyamada
運用に効く!JVMオプション三選
運用に効く!JVMオプション三選
Kazuhiro Oinuma
エディタ戦争
エディタ戦争
Akira Hagiwara
Closure Compiler Updates for ES6
Closure Compiler Updates for ES6
Teppei Sato
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
mametter
What's hot
(20)
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
VimM#3
VimM#3
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書く
Ansibleハンズオン勉強会
Ansibleハンズオン勉強会
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
俺のZabbixがこんなに可愛いわけがない
俺のZabbixがこんなに可愛いわけがない
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Infrastructure as codeのススメ
Infrastructure as codeのススメ
webアプリケーションフレームワークの話
webアプリケーションフレームワークの話
Real World PHP in pixiv
Real World PHP in pixiv
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話
Flowtype Introduction
Flowtype Introduction
Osoljp201204
Osoljp201204
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013
OSC 2011 KeySnail
OSC 2011 KeySnail
運用に効く!JVMオプション三選
運用に効く!JVMオプション三選
エディタ戦争
エディタ戦争
Closure Compiler Updates for ES6
Closure Compiler Updates for ES6
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)
Viewers also liked
Unixファイルシステムの歴史
Unixファイルシステムの歴史
magoroku Yamamoto
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話
kanorimon
V6 unix in okinawa
V6 unix in okinawa
magoroku Yamamoto
シンプル資産運用法
シンプル資産運用法
renny_29
貯金エクササイズ
貯金エクササイズ
Takuya Komatsu
ファイルシステム
ファイルシステム
Yohei Tanaka
Deb2009
Deb2009
Yuichi Tateno
20140607 限界はどこにある?
20140607 限界はどこにある?
Runabout GIA
2015年10月度スパイス・パークのアップデート計画
2015年10月度スパイス・パークのアップデート計画
Tsuyoshi Horigome
家計簿習慣化支援サービス ~エロい家計簿~
家計簿習慣化支援サービス ~エロい家計簿~
Takuya Komatsu
物欲家計簿プレゼン
物欲家計簿プレゼン
Takuya Komatsu
仕様記述言語の中の関数
仕様記述言語の中の関数
ardbeg1958
Hiib
Hiib
Franz Kuribayashi
お金持ちはなぜタワーマンションに住むの?そのリスクは?
お金持ちはなぜタワーマンションに住むの?そのリスクは?
節約 社長
だいたいデジタルのライフログ
だいたいデジタルのライフログ
Ryusuke Goto
[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT
Yoshifumi Yamaguchi
0423mitsubishi
0423mitsubishi
loftwork
日本を捨てた富裕層たち
日本を捨てた富裕層たち
yorihiko katou
婚活メソッド
婚活メソッド
Akiko Iwakiri
Language presentations at WOCS and after.
Language presentations at WOCS and after.
Kiyoshi Ogawa
Viewers also liked
(20)
Unixファイルシステムの歴史
Unixファイルシステムの歴史
PDP-11のインタプリタを作った話
PDP-11のインタプリタを作った話
V6 unix in okinawa
V6 unix in okinawa
シンプル資産運用法
シンプル資産運用法
貯金エクササイズ
貯金エクササイズ
ファイルシステム
ファイルシステム
Deb2009
Deb2009
20140607 限界はどこにある?
20140607 限界はどこにある?
2015年10月度スパイス・パークのアップデート計画
2015年10月度スパイス・パークのアップデート計画
家計簿習慣化支援サービス ~エロい家計簿~
家計簿習慣化支援サービス ~エロい家計簿~
物欲家計簿プレゼン
物欲家計簿プレゼン
仕様記述言語の中の関数
仕様記述言語の中の関数
Hiib
Hiib
お金持ちはなぜタワーマンションに住むの?そのリスクは?
お金持ちはなぜタワーマンションに住むの?そのリスクは?
だいたいデジタルのライフログ
だいたいデジタルのライフログ
[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT
0423mitsubishi
0423mitsubishi
日本を捨てた富裕層たち
日本を捨てた富裕層たち
婚活メソッド
婚活メソッド
Language presentations at WOCS and after.
Language presentations at WOCS and after.
Similar to V6 Interpreter (Nagoya Geek Bar 2011-05-02)
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
動画共有ツール
動画共有ツール
tamtam180
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン
兎 伊藤
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
Izumi Tsutsui
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
ConoHa, GMO INTERNET
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
Masataka Tsukamoto
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
Jun-ichi Sakamoto
FOLIOのコードを動かしてみた
FOLIOのコードを動かしてみた
Futoshi Tanuma
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
Makoto Nishimura
邪道Jenkins
邪道Jenkins
hazisarashi
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
Masahiro Sano
scheme処理系の実装
scheme処理系の実装
bobuhiro11
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
terurou
たのしいNode.js
たのしいNode.js
ishiki-takai
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
mganeko
composer-scriptsについて
composer-scriptsについて
Hiraku Nakano
Unix architecture
Unix architecture
raw-hide
メガ Unity ユーザーミートアップ 2012
メガ Unity ユーザーミートアップ 2012
cfm_art
Similar to V6 Interpreter (Nagoya Geek Bar 2011-05-02)
(20)
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
動画共有ツール
動画共有ツール
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
FOLIOのコードを動かしてみた
FOLIOのコードを動かしてみた
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
邪道Jenkins
邪道Jenkins
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
scheme処理系の実装
scheme処理系の実装
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
たのしいNode.js
たのしいNode.js
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
composer-scriptsについて
composer-scriptsについて
Unix architecture
Unix architecture
メガ Unity ユーザーミートアップ 2012
メガ Unity ユーザーミートアップ 2012
More from 7shi
ELFの動的リンク
ELFの動的リンク
7shi
F#とトランスレータ
F#とトランスレータ
7shi
F#談話室(3) LT
F#談話室(3) LT
7shi
マーク&スイープ勉強会
マーク&スイープ勉強会
7shi
Cコンパイラの改造(未)
Cコンパイラの改造(未)
7shi
V6でJIT・部分適用・継続
V6でJIT・部分適用・継続
7shi
ZIP勉強会
ZIP勉強会
7shi
Deflate
Deflate
7shi
CRC-32
CRC-32
7shi
無料環境でWindows Mobileアプリ開発
無料環境でWindows Mobileアプリ開発
7shi
LLPML
LLPML
7shi
More from 7shi
(11)
ELFの動的リンク
ELFの動的リンク
F#とトランスレータ
F#とトランスレータ
F#談話室(3) LT
F#談話室(3) LT
マーク&スイープ勉強会
マーク&スイープ勉強会
Cコンパイラの改造(未)
Cコンパイラの改造(未)
V6でJIT・部分適用・継続
V6でJIT・部分適用・継続
ZIP勉強会
ZIP勉強会
Deflate
Deflate
CRC-32
CRC-32
無料環境でWindows Mobileアプリ開発
無料環境でWindows Mobileアプリ開発
LLPML
LLPML
Recently uploaded
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
Recently uploaded
(12)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
1.
UNIX V6 インタプリタ
七誌
2.
自己紹介 • 典型的な社内ニート(たまにVBA程度) • プログラミングはほとんど趣味
– 良いネタができたら独立・・・と考えて早10年 – 自然言語処理がやりたかったけど、さっぱり • みんなで自作のおもちゃコンパイラを作って、 自作のおもちゃOSを作って遊びたい! • コンパイラを作るにはバイナリの知識が必要 • そのため準備としてPE勉強会を主催
3.
自作コンパイラ • 4年くらい掛けて独自言語コンパイラのセルフ
ホスティングに到達 – セルフホスティングする前はC#で書いた • ある程度できてから、独自言語でコンパイラ を書き直そうとして挫折 • 2年くらい放置した後、C#から独自言語にトラ ンスレートすれば良いと気付いた • こういう遊びを広めたい!
4.
最初の失敗 独自言語
C# コンパイラ のソース コンパイラ (C#) 独自言語 サンプル コンパイラ EXE (独自言語) のEXE コンパイラ書き直し • あれもこれも! (独自言語) • セカンドシステム症候群
5.
トランスレート
タイムスタンプ以外 独自言語コンパイラ C# 完全一致! のソース(C#) コンパイラ 独自言語 コンパイラ のEXE C#から独自言語への トランスレータ 独自言語 独自言語 独自言語コンパイラ コンパイラ コンパイラ のソース(独自言語) のEXE のEXE セルフホスティング
6.
OS遊び • 2年ほどFreeBSDをメインにしていたけど、巨
大過ぎて内部には手が付けられなかった • MINIXがシンプルで良いと思ったので、PEか らa.outに変換するツールを作って、VC++で 吐いたEXEを変換して動かしてみた – カーネルもVC++でビルドできるようにはなったけ ど、アセンブリをACKからMASMに書き換える際 に間違えたらしく、うまく動かなかった – カーネルハックには到達できず挫折
7.
UNIX V6 • 1975年頃の古いUNIX
– コンパイラ+カーネルのセットとしてはMINIXより も遥かにコンパクトで手頃だと思った • 解説書のLions本は持っていたけど、どこから 読めば良いのかよく分からず放置 • そんなとき読書会が始まった! – PDP-11のアセンブリが読めなくて脱落寸前 • 慣れるため、simh(エミュレータ)でV6を動か して、ハローワールドを書いて遊んだりした
8.
V6のファイルシステム • ハローワールドをディスクイメージから取り出
して、バイナリを分析したい • TCP/IP実装前でネットワークはない • 仕方ないのでカーネルのソースを見ながら ディスクイメージを分析して、ファイルを取り出 すツールを作った • VFS以前の時代で、lsがディレクトリエントリを ユーザー側で読んでいるのが衝撃的
9.
V6FS • F#で作った自作のファイル抜き出しツール • 最初はWindows
FormsのGUIアプリ • GUIアプリって気軽に試しにくいよね – ダウンロード→展開→実行 – ClickOnceではインストールされてしまう – Windows以外ではmonoで動くけど、monoはな かなか普及しない • とりあえずブラウザで動かすためSilverlight
10.
F# • とにかく構文が簡潔 –
セミコロンやブロックのブレースが不要 • REPL標準装備 • クラスを作らずにコードをベタ書きできる – C#だと必ずクラスで囲まなければいけない class Test { static void Main() { … } } • モジュールをopenすれば接頭辞が不要 – C#だとstaticメソッド呼び出しにクラス名が必要 – VB.NETでもできるけど
11.
Silverlight • Webページに貼り付けるプラグイン • MS版Flashというかアプレットみたいなもの
– 実は.NET 1.0の頃からアプレットは作れた – 誰も使わない、MSも推奨しない • GUI以外のコードが流用できるので、.NETア プリをWebに貼り付けるのが手軽 • サーバー側に処理を組み込まなくても、ロー カルに閉じた擬似ファイル送受信が可能 – ディスクイメージ→ファイル抜き出しに使用
12.
ツールを作ったけど • いちいちファイルを取り出すのが面倒 • V6の外でコンパイラが動けば済むのでは?
– バイナリ分析が目的なので、必ずしも実行できな くても構わない • gccはpdp11-aoutターゲットをサポート – V6のコードはK&R以前の古いC言語でgcc非互 換、アセンブラもgasとは非互換 • V6のcc/asがどうしても必要!
13.
移植戦略 •
ccを今のC言語で書き直すのは、頑張れば できると思った • しかしasはフルアセンブラ • さてどうしよう・・・? 1. アセンブリを解読しながら高級言語に翻訳 2. 文法を真似て互換アセンブラを開発 3. インタプリタを作って動かす ← 採用
14.
PDP-11インタプリタ • 初めに逆アセンブラを作成 • 当初はGUIアプリとSilverlightを並行開発
– すぐに面倒になりSilverlightに一本化 • 逆汗の分岐をコピペして実行に書き換え – PDP-11はアドレッシングモードが豊富で、初めは 理解が曖昧だったので苦労した – 動いた解釈が正しいというのが判断基準 – ひたすらログを目視でトレース • 開発言語はVB.NET(ぇ
15.
VB.NET • ごめんなさい、ぬるい人間にF#はきつい! • 言語ではなくIDEのサポート不足が問題
– 補完が微妙とかは許容範囲内 – 「すべての参照の検索」 ができないのは致命的 • C#の好きじゃない点もVB.NETならクリア – セミコロンを打たなくて良い – モジュールの接頭辞を省略できる – VB10なら次の行への継続も自動判断 • VB9までこれができないのでC#を使っていた
16.
コマンドライン版 • Silverlight版インタプリタでcc/asが動いた • カーネルをビルドしていじるには、結局ローカ
ルのコマンドラインじゃないと不自由 • 当初はVB.NETのコードでコマンドライン版を 作ろうと思っていたけど、Lions本読書会の参 加者に.NET愛好者はいない! • 仕方ないので読書会前日にC++で作り直し • V6カーネルのビルドができるのを確認
17.
C++ • POSIX前提にInterix上で開発 –
NetBSD, FreeBSD, Mac OS Xで動作確認 • C++0xとかboostはなし – 依存ライブラリなしに、OSデフォルトのコンパイラ でサクっとビルドできるようにしたい – FreeBSDはGPL3避けのためgcc-4.2系で更新 を停止している(clang待ち) • STLを使った10年くらい前のスタイルで開発 – STLすら使えない環境は・・・ごめんなさい
18.
Interix • MSが買収して公式になったPOSIXサブシステム • Interix上のV6インタプリタでカーネルをビルドすると
simhの5倍くらい遅い • VMware上のNetBSDではsimhとほぼ同じ速度 • InterixのオーバーヘッドはCygwinほどではないと 思っていたけど、これは酷い – Vista以降はUltimate/Enterprise縛りがあって人に薦めら れないので、個人的にはMSYSに移行する予定 • 仕方ないのでWin32ネイティブに移植すると、simh とほぼ同じスピードが出た
19.
システムコール • cc/asを動かすのに必要なものだけ実装 –
標準出力/ファイル入出力/fork/exec • 標準出力のシステムコールで出力した文字を テキストボックスに表示するだけ – トレースでV6のprintf()がデフォルトでバッファリン グせずに一文字ずつ出力しているのがわかる • Silverlight上でのファイルはRAMディスク – 実態は単なるフルパスのハッシュテーブル
20.
fork/exec (1) • これが一番厄介だった •
Silverlight、POSIX、Win32それぞれ別実装 • POSIXではforkは実際にフォーク(プロセス のコピー)、execはVM内でのシミュレート • SilverlightとWin32はネイティブプロセスには 触れずに完全にVM内でのシミュレート – 原理的には実装を同じにできる – そうなっていないのは、Silverlightでの実装が稚 拙で、Win32を実装したとき改良したため
21.
fork/exec (2) • V6のforkは子プロセスは
_fork: mov r5,- r5,-(sp) コピー後そのまま実行し、 mov sp,r5 親プロセスは命令を1つ sys fork 子 親 br 1f 飛ばして続行 bec 2f • Lions本読書会で教えて 1: jmp cerror もらった mov r0,_par_uid clr r0 – 教えてくれた方は、この仕 2: 組みを解読するのにとて mov (sp)+,r5 rts pc も苦労したとのこと
22.
fork/exec (3) • POSIXではホストのネイティブのforkを使って
インタプリタのプロセスを実際にfork後、親プ ロセス側のVMのPCをいじって対応 プロセス(親) VM 本物のfork sys fork プロセス(子) VM PC += 2
23.
fork/exec (4)
プロセス • Silverlightではcc/asに特 VM(親) 化した小細工で実装 • 子はすぐexecして親はそ sys fork sys exec れをwaitするパターン • execでVMのインスタンス VM(子) を作り、exit後にfork時点 PC += 2 sys exit にロールバックして続行 sys wait • シングルスレッド実行のた めwaitは素通り
24.
fork/exec (5)
プロセス • Win32にはネイティブの VM(親) forkはないため、VMのイ ンスタンスをコピーして擬 似的にforkを再現 sys fork VM(子) • execはVMのメモリイメー sys exec ジを書き換えて再現 PC += 2 sys exit • シングルスレッド実行の ため、Silverlightと同じよ sys wait うにwaitは素通り • Silverlightの改良モデル
25.
オチ • 読書会の参加者から既存のユーザーモード
シミュレータが存在すると教えてもらった – apout http://puszcza.gnu.org.ua/software/apout/ • 存在を知っていたら、作らなかったと思う • せっかく作ったので、ユーザーモードとカーネ ルモードの特定の遷移をモデル化して抽出す るなど、学習に特化した方向で発展させたい
26.
最後に • V6関係は手探りだったけど、状況がわかって
かなり開けてきた感じ • まごろくさんのV7の説明を聞いて、基本的な 部分はほとんど同じだと感じた – 読書会でV6のバグじゃないかと指摘された部分 がV7で直されていたりして面白い – BSD派なのでV6からBSDを追いたいかも • コンパイラ・OS自作にフィードバックしたい – あれ、自然言語処理はいつになったら・・・
27.
ご清聴ありがとうございました
Download now