Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
uchan_nos
PPTX, PDF
432 views
OpeLa セルフホストなOSと言語処理系の自作
OpeLa is a project to make self-hosted OS and language processing system.
Software
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 15
2
/ 15
3
/ 15
4
/ 15
5
/ 15
6
/ 15
7
/ 15
8
/ 15
9
/ 15
10
/ 15
11
/ 15
12
/ 15
13
/ 15
14
/ 15
15
/ 15
More Related Content
PDF
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
by
Hirotaka Kawata
PDF
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
by
Hirotaka Kawata
PDF
UEFI向け自作OSの紹介
by
Yuma Ohgami
PDF
xv6 + mist32 + mruby
by
Hirotaka Kawata
PDF
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
by
Hirotaka Kawata
PDF
x86_64向け自作OSの紹介
by
Yuma Ohgami
ODP
Open Design Computer Project - Tsukuba.pm
by
Hirotaka Kawata
PDF
emruby: ブラウザで動くRuby
by
mametter
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
by
Hirotaka Kawata
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
by
Hirotaka Kawata
UEFI向け自作OSの紹介
by
Yuma Ohgami
xv6 + mist32 + mruby
by
Hirotaka Kawata
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
by
Hirotaka Kawata
x86_64向け自作OSの紹介
by
Yuma Ohgami
Open Design Computer Project - Tsukuba.pm
by
Hirotaka Kawata
emruby: ブラウザで動くRuby
by
mametter
What's hot
PDF
OpenSolaris Printing Environment
by
Naruhiko Ogasawara
PDF
Ruby で高速なプログラムを書く
by
mametter
PDF
ocsとselってコマンド作ったわよ
by
xztaityozx
PDF
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
by
Yukio Saito
PDF
Cent osにpyhtonをインストールしてみよう
by
2bo 2bo
PDF
ちょっと古いマシンにLinuxを
by
Kenichiro MATOHARA
PDF
ICSをビルドしてみた
by
kinneko
PDF
197x Timer with Your Messages
by
Kuniaki Igarashi
PDF
Pythonが動く仕組み(の概要)
by
Yoshiaki Shibutani
PDF
Pythonista も ls を読むべきか?
by
Katsunori FUJIWARA
PPTX
ロボットシステム学2015年第5回
by
Ryuichi Ueda
PDF
TranslimitのChatOps事情と愉快なbotたち
by
Masakazu Matsushita
PDF
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
by
Fuminobu Takeyama
PPTX
ロボットシステム学2015年第9回
by
Ryuichi Ueda
PDF
LinuxのFull ticklessを試してみた
by
Hiraku Toyooka
PPTX
RuntimeUnitTestToolkit for Unity
by
Yoshifumi Kawai
PDF
20161106 osc-tokyo-command-line
by
Fuminobu Takeyama
PPTX
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
by
YASUKAZU NAGATOMI
PDF
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
by
Fuminobu Takeyama
PDF
システムコール
by
Masahiro Tomita
OpenSolaris Printing Environment
by
Naruhiko Ogasawara
Ruby で高速なプログラムを書く
by
mametter
ocsとselってコマンド作ったわよ
by
xztaityozx
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
by
Yukio Saito
Cent osにpyhtonをインストールしてみよう
by
2bo 2bo
ちょっと古いマシンにLinuxを
by
Kenichiro MATOHARA
ICSをビルドしてみた
by
kinneko
197x Timer with Your Messages
by
Kuniaki Igarashi
Pythonが動く仕組み(の概要)
by
Yoshiaki Shibutani
Pythonista も ls を読むべきか?
by
Katsunori FUJIWARA
ロボットシステム学2015年第5回
by
Ryuichi Ueda
TranslimitのChatOps事情と愉快なbotたち
by
Masakazu Matsushita
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
by
Fuminobu Takeyama
ロボットシステム学2015年第9回
by
Ryuichi Ueda
LinuxのFull ticklessを試してみた
by
Hiraku Toyooka
RuntimeUnitTestToolkit for Unity
by
Yoshifumi Kawai
20161106 osc-tokyo-command-line
by
Fuminobu Takeyama
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
by
YASUKAZU NAGATOMI
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
by
Fuminobu Takeyama
システムコール
by
Masahiro Tomita
More from uchan_nos
PPTX
MikanOSと自作CPUをUSBで接続する
by
uchan_nos
PPTX
OSを手作りするという趣味と仕事
by
uchan_nos
PPTX
小型安価なFPGAボードの紹介と任意波形発生器
by
uchan_nos
PPTX
トランジスタ回路:エミッタ接地増幅回路
by
uchan_nos
PPTX
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
by
uchan_nos
PPTX
自作言語でお絵描き
by
uchan_nos
PPTX
OpeLa 進捗報告 at 第23回自作OSもくもく会
by
uchan_nos
PPTX
サイボウズ・ラボへ転籍して1年を振り返る
by
uchan_nos
PPTX
USB3.0ドライバ開発の道
by
uchan_nos
PPTX
Security Nextcamp remote mob programming
by
uchan_nos
PPTX
Langsmith OpeLa handmade self-hosted OS and LPS
by
uchan_nos
PPTX
自動でバグを見つける!プログラム解析と動的バイナリ計装
by
uchan_nos
PDF
1を書いても0が読める!?隠れた重要命令INVLPG
by
uchan_nos
PDF
レガシーフリーOSに必要な要素技術 legacy free os
by
uchan_nos
PDF
Building libc++ for toy OS
by
uchan_nos
PDF
プランクトンサミットの歴史2019
by
uchan_nos
PDF
Introduction of security camp 2019
by
uchan_nos
PDF
30分で分かる!OSの作り方 ver.2
by
uchan_nos
PDF
Timers
by
uchan_nos
PDF
USB3 host driver program structure
by
uchan_nos
MikanOSと自作CPUをUSBで接続する
by
uchan_nos
OSを手作りするという趣味と仕事
by
uchan_nos
小型安価なFPGAボードの紹介と任意波形発生器
by
uchan_nos
トランジスタ回路:エミッタ接地増幅回路
by
uchan_nos
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
by
uchan_nos
自作言語でお絵描き
by
uchan_nos
OpeLa 進捗報告 at 第23回自作OSもくもく会
by
uchan_nos
サイボウズ・ラボへ転籍して1年を振り返る
by
uchan_nos
USB3.0ドライバ開発の道
by
uchan_nos
Security Nextcamp remote mob programming
by
uchan_nos
Langsmith OpeLa handmade self-hosted OS and LPS
by
uchan_nos
自動でバグを見つける!プログラム解析と動的バイナリ計装
by
uchan_nos
1を書いても0が読める!?隠れた重要命令INVLPG
by
uchan_nos
レガシーフリーOSに必要な要素技術 legacy free os
by
uchan_nos
Building libc++ for toy OS
by
uchan_nos
プランクトンサミットの歴史2019
by
uchan_nos
Introduction of security camp 2019
by
uchan_nos
30分で分かる!OSの作り方 ver.2
by
uchan_nos
Timers
by
uchan_nos
USB3 host driver program structure
by
uchan_nos
OpeLa セルフホストなOSと言語処理系の自作
1.
OpeLa:セルフホストな OSと言語処理系の自作 @uchan_nos 第22回自作OSもくもく会 2020/09/06
2.
自己紹介 • Twitter @uchan_nos •
サイボウズ・ラボ株式会社 • 東京工業大学 特任助教 • 自作OSもくもく会コアメンバー • 『30日でできる! OS自作入門』の校正担当 • 『自作エミュレータで学ぶ x86アーキテクチャ』の著者
3.
OpeLa • OpeLa: Operating
and Language processing system • OSと言語処理系を全部自作するプロジェクト • OS,アセンブラ,コンパイラ,リンカ,ライブラリ • 特徴:完全なセルフホスト
4.
セルフホストとは(コンパイラ編) • 自分自身をコンパイルすること • GCCやClangはそうなっている •
GCCをビルドするのに他のコンパイラの 助けは不要 • 自作言語およびOSでこれをやりたい! 自作コンパイラ ソースコード 第1世代 自作コンパイラ 入力 第2世代 自作コンパイラ コンパイル
5.
自作言語をセルフホストする道のり 第1世代 自作コンパイラ opelac.cpp clang++ 入力 第1世代 自作コンパイラ コンパイル 第2世代 自作コンパイラ opelac.opl 書き直し コンパイル 入力 第2世代 自作コンパイラ コンパイル 第3世代 自作コンパイラ 入力 ここまでくれば ぐるぐる回せる (はず)
6.
なぜ自作言語? • uchanは「既存言語でいいじゃん」派だった • なぜ「言語仕様」から自作しようとしたのか? •
答え:OSだけが独自仕様なのはバランスが悪いと思った • 加えて,あらゆるソースコードを自分で(自分たちで)書くこ とを保証したかった • 既存言語を使っちゃうと,コピペがあっても気づけない • 独自言語なら世界に存在しないのでズルは不可能
7.
OpeLaで目指す「完全セルフホスト」 自作OSの上で動く自作言語処理系で 自作OSと自作言語処理系をビルドすること 自作OS 自作言語処理系 自作OS ソースコード 自作言語処理系 ソースコード
8.
なぜ完全セルフホスト? • 目標地点がはっきりする • 言語の観点:OSが記述できる程度の機能 •
アドレス参照,in/out命令の発行,各種レジスタの読み書き • OSの観点:言語処理系が動く程度の機能 • プロセス,ファイル入出力 • 発展としては,テキスト編集
9.
余分な機能は足さない • 総時間が最小になるようにしたい • 機能Xを作る時間
< Xによって節約できる開発工数 が見込めるならXを作る • for文が無くてもOSは書けるが,あった方が効率的だろう • セルフホストにとって効果が薄い開発を防ぐため • 余分な言語機能の例:例外,動的型検査,GC,etc. • 余分なOS機能の例:高度なグラフィック,音楽再生,etc.
10.
【完全版】自作セルフホストの道のり 第1世代 opelac.cpp clang++ 第1世代 opelac 第2世代 opelac.opl 第2世代 opelac 第3世代 opelac 自作OS用 opelac.opl 自作OS向 けに修正 自作OS用 opelacこれらはLinux用opelac
11.
自作OSのセルフホストを目指して 1. 自作OSをLinux用opelacでク ロスコンパイル 2. 自作OS向けに調整した自作 言語処理系をLinux用opelac でクロスコンパイル 3.
自作OSを自作OS用opelacで コンパイル 4. 自作OS向けに調整した自作 言語処理系を自作OS用 opelacでコンパイル 自作OS my_os.opl Linux用 opelac Linux 自作OS 自作OS用 opelac.opl 自作OS用 opelac 1 2 3 4
12.
作成の順序(1/2) • セルフホスト可能なコンパイラを自作する • 独自言語のソースコード
→ x86-64 アセンブリコード • 自作言語でブートローダー と OS を簡易実装する • 自作言語で OS が実装できることの実証を早期に行うのが目的 • 自作言語でライブラリを自作する • 言語処理系や OS の開発に使える汎用的なライブラリとする • 自作言語でアセンブラを自作する • 自作言語でリンカを自作する • この時点で言語処理系と呼べるものがすべて自作に置き換わる
13.
作成の順序(2/2) • 自作言語処理系でビルドツール(≒make)を自作 • のちに自作
OS 上で自作言語処理系のビルドをするときに備え,自作 OS 上で動くビルドツールが欲しいのでこの時点で作る • 自作言語処理系で本格的な OS を自作 • 自作言語処理系に自作OS向けアプリ生成オプションを追加 • 自作言語処理系とビルドツールを自作 OS 上で動かす • 自作言語処理系とビルドツールを自作 OS 上でビルド • 完全なセルフホストが実現される
14.
Opelacのデモ 2020/09/06までの実装の進捗
15.
Opelac開発での気づき • セミコロンがある方がパースが楽 • セミコロンが無いと,行途中の改行がトリッキー •
foo := a + b + c + d // OK • foo := a + b + c + d // Error • 型推論が割と初期に必要になってしまった • foo := 42; の形式をサポートするため • 型の表現が再帰構造になって大変 • int, *int: 比較的単純な型 • func(func(int, int), int): 再帰してる型
Download