SlideShare a Scribd company logo
1 of 15
OpeLa:セルフホストな
OSと言語処理系の自作
@uchan_nos
第22回自作OSもくもく会
2020/09/06
自己紹介
• Twitter @uchan_nos
• サイボウズ・ラボ株式会社
• 東京工業大学 特任助教
• 自作OSもくもく会コアメンバー
• 『30日でできる! OS自作入門』の校正担当
• 『自作エミュレータで学ぶ
x86アーキテクチャ』の著者
OpeLa
• OpeLa: Operating and Language processing system
• OSと言語処理系を全部自作するプロジェクト
• OS,アセンブラ,コンパイラ,リンカ,ライブラリ
• 特徴:完全なセルフホスト
セルフホストとは(コンパイラ編)
• 自分自身をコンパイルすること
• GCCやClangはそうなっている
• GCCをビルドするのに他のコンパイラの
助けは不要
• 自作言語およびOSでこれをやりたい!
自作コンパイラ
ソースコード
第1世代
自作コンパイラ
入力
第2世代
自作コンパイラ
コンパイル
自作言語をセルフホストする道のり
第1世代
自作コンパイラ
opelac.cpp
clang++
入力
第1世代
自作コンパイラ
コンパイル
第2世代
自作コンパイラ
opelac.opl
書き直し
コンパイル
入力
第2世代
自作コンパイラ
コンパイル
第3世代
自作コンパイラ
入力
ここまでくれば
ぐるぐる回せる
(はず)
なぜ自作言語?
• uchanは「既存言語でいいじゃん」派だった
• なぜ「言語仕様」から自作しようとしたのか?
• 答え:OSだけが独自仕様なのはバランスが悪いと思った
• 加えて,あらゆるソースコードを自分で(自分たちで)書くこ
とを保証したかった
• 既存言語を使っちゃうと,コピペがあっても気づけない
• 独自言語なら世界に存在しないのでズルは不可能
OpeLaで目指す「完全セルフホスト」
自作OSの上で動く自作言語処理系で
自作OSと自作言語処理系をビルドすること
自作OS
自作言語処理系
自作OS
ソースコード
自作言語処理系
ソースコード
なぜ完全セルフホスト?
• 目標地点がはっきりする
• 言語の観点:OSが記述できる程度の機能
• アドレス参照,in/out命令の発行,各種レジスタの読み書き
• OSの観点:言語処理系が動く程度の機能
• プロセス,ファイル入出力
• 発展としては,テキスト編集
余分な機能は足さない
• 総時間が最小になるようにしたい
• 機能Xを作る時間 < Xによって節約できる開発工数
が見込めるならXを作る
• for文が無くてもOSは書けるが,あった方が効率的だろう
• セルフホストにとって効果が薄い開発を防ぐため
• 余分な言語機能の例:例外,動的型検査,GC,etc.
• 余分なOS機能の例:高度なグラフィック,音楽再生,etc.
【完全版】自作セルフホストの道のり
第1世代
opelac.cpp
clang++
第1世代
opelac
第2世代
opelac.opl
第2世代
opelac
第3世代
opelac
自作OS用
opelac.opl
自作OS向
けに修正
自作OS用
opelacこれらはLinux用opelac
自作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
作成の順序(1/2)
• セルフホスト可能なコンパイラを自作する
• 独自言語のソースコード → x86-64 アセンブリコード
• 自作言語でブートローダー と OS を簡易実装する
• 自作言語で OS が実装できることの実証を早期に行うのが目的
• 自作言語でライブラリを自作する
• 言語処理系や OS の開発に使える汎用的なライブラリとする
• 自作言語でアセンブラを自作する
• 自作言語でリンカを自作する
• この時点で言語処理系と呼べるものがすべて自作に置き換わる
作成の順序(2/2)
• 自作言語処理系でビルドツール(≒make)を自作
• のちに自作 OS 上で自作言語処理系のビルドをするときに備え,自作
OS 上で動くビルドツールが欲しいのでこの時点で作る
• 自作言語処理系で本格的な OS を自作
• 自作言語処理系に自作OS向けアプリ生成オプションを追加
• 自作言語処理系とビルドツールを自作 OS 上で動かす
• 自作言語処理系とビルドツールを自作 OS 上でビルド
• 完全なセルフホストが実現される
Opelacのデモ
2020/09/06までの実装の進捗
Opelac開発での気づき
• セミコロンがある方がパースが楽
• セミコロンが無いと,行途中の改行がトリッキー
• foo := a + b +
c + d // OK
• foo := a + b
+ c + d // Error
• 型推論が割と初期に必要になってしまった
• foo := 42; の形式をサポートするため
• 型の表現が再帰構造になって大変
• int, *int: 比較的単純な型
• func(func(int, int), int): 再帰してる型

More Related Content

What's hot

OpenSolaris Printing Environment
OpenSolaris Printing EnvironmentOpenSolaris Printing Environment
OpenSolaris Printing EnvironmentNaruhiko Ogasawara
 
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書くRuby で高速なプログラムを書く
Ruby で高速なプログラムを書くmametter
 
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよxztaityozx
 
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。Yukio Saito
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう2bo 2bo
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをKenichiro MATOHARA
 
ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみたkinneko
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your MessagesKuniaki Igarashi
 
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)Yoshiaki Shibutani
 
Pythonista も ls を読むべきか?
Pythonista も ls を読むべきか?Pythonista も ls を読むべきか?
Pythonista も ls を読むべきか?Katsunori FUJIWARA
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回Ryuichi Ueda
 
TranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたちTranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたちMasakazu Matsushita
 
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3Fuminobu Takeyama
 
ロボットシステム学2015年第9回
ロボットシステム学2015年第9回ロボットシステム学2015年第9回
ロボットシステム学2015年第9回Ryuichi Ueda
 
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたLinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたHiraku Toyooka
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityYoshifumi Kawai
 
20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-lineFuminobu Takeyama
 
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話YASUKAZU NAGATOMI
 
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるサーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるFuminobu Takeyama
 

What's hot (20)

OpenSolaris Printing Environment
OpenSolaris Printing EnvironmentOpenSolaris Printing Environment
OpenSolaris Printing Environment
 
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書くRuby で高速なプログラムを書く
Ruby で高速なプログラムを書く
 
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよ
 
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxを
 
ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみた
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your Messages
 
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
 
Pythonista も ls を読むべきか?
Pythonista も ls を読むべきか?Pythonista も ls を読むべきか?
Pythonista も ls を読むべきか?
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回
 
TranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたちTranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたち
 
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
 
ロボットシステム学2015年第9回
ロボットシステム学2015年第9回ロボットシステム学2015年第9回
ロボットシステム学2015年第9回
 
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたLinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
 
20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line
 
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
オンプレ&HTTP Proxyな環境でRancherOS入れてみた話
 
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるサーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
 
システムコール
システムコールシステムコール
システムコール
 

Similar to OpeLa セルフホストなOSと言語処理系の自作

Langsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPSLangsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPSuchan_nos
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編Yusuke Ito
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトuchan_nos
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたしRyunosuke SATO
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!Masaki Muranaka
 
Closure Compiler Updates for ES6
Closure Compiler Updates for ES6Closure Compiler Updates for ES6
Closure Compiler Updates for ES6Teppei Sato
 
Macで快適にプログラミング
Macで快適にプログラミングMacで快適にプログラミング
Macで快適にプログラミングYusuke Sakurai
 
PHP でも活用できる Makefile
PHP でも活用できる MakefilePHP でも活用できる Makefile
PHP でも活用できる MakefileShohei Okada
 
Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone Manabu Terada
 
LibreOffice for NPO 20121104
LibreOffice for NPO 20121104LibreOffice for NPO 20121104
LibreOffice for NPO 20121104hyogontech
 
Introduction to VSCode
Introduction to VSCodeIntroduction to VSCode
Introduction to VSCodeYuki Igarashi
 
PasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thPasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thKiyoka Nishiyama
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方uchan_nos
 
たまにはライセンスの話をしよう 20110211
たまにはライセンスの話をしよう 20110211たまにはライセンスの話をしよう 20110211
たまにはライセンスの話をしよう 20110211Yutaka Kachi
 
Swiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲームSwiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲーム聡 中川
 

Similar to OpeLa セルフホストなOSと言語処理系の自作 (20)

Langsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPSLangsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPS
 
Hiroshima.rb on github
Hiroshima.rb on githubHiroshima.rb on github
Hiroshima.rb on github
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
 
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo FallTOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
Emacs softLayer
Emacs softLayerEmacs softLayer
Emacs softLayer
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
Closure Compiler Updates for ES6
Closure Compiler Updates for ES6Closure Compiler Updates for ES6
Closure Compiler Updates for ES6
 
Macで快適にプログラミング
Macで快適にプログラミングMacで快適にプログラミング
Macで快適にプログラミング
 
Net fringejp2016
Net fringejp2016Net fringejp2016
Net fringejp2016
 
Tizen & Crosswalk
Tizen & CrosswalkTizen & Crosswalk
Tizen & Crosswalk
 
PHP でも活用できる Makefile
PHP でも活用できる MakefilePHP でも活用できる Makefile
PHP でも活用できる Makefile
 
Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone Ocs2012 tokyo/spring plone
Ocs2012 tokyo/spring plone
 
LibreOffice for NPO 20121104
LibreOffice for NPO 20121104LibreOffice for NPO 20121104
LibreOffice for NPO 20121104
 
Introduction to VSCode
Introduction to VSCodeIntroduction to VSCode
Introduction to VSCode
 
PasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thPasteHub at kansai emacs 9th
PasteHub at kansai emacs 9th
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方
 
たまにはライセンスの話をしよう 20110211
たまにはライセンスの話をしよう 20110211たまにはライセンスの話をしよう 20110211
たまにはライセンスの話をしよう 20110211
 
Swiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲームSwiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲーム
 

More from uchan_nos

MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続するMikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続するuchan_nos
 
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事uchan_nos
 
小型安価なFPGAボードの紹介と任意波形発生器
小型安価なFPGAボードの紹介と任意波形発生器小型安価なFPGAボードの紹介と任意波形発生器
小型安価なFPGAボードの紹介と任意波形発生器uchan_nos
 
トランジスタ回路:エミッタ接地増幅回路
トランジスタ回路:エミッタ接地増幅回路トランジスタ回路:エミッタ接地増幅回路
トランジスタ回路:エミッタ接地増幅回路uchan_nos
 
自作言語でお絵描き
自作言語でお絵描き自作言語でお絵描き
自作言語でお絵描きuchan_nos
 
OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会uchan_nos
 
サイボウズ・ラボへ転籍して1年を振り返る
サイボウズ・ラボへ転籍して1年を振り返るサイボウズ・ラボへ転籍して1年を振り返る
サイボウズ・ラボへ転籍して1年を振り返るuchan_nos
 
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道USB3.0ドライバ開発の道
USB3.0ドライバ開発の道uchan_nos
 
Security Nextcamp remote mob programming
Security Nextcamp remote mob programmingSecurity Nextcamp remote mob programming
Security Nextcamp remote mob programminguchan_nos
 
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装uchan_nos
 
1を書いても0が読める!?隠れた重要命令INVLPG
1を書いても0が読める!?隠れた重要命令INVLPG1を書いても0が読める!?隠れた重要命令INVLPG
1を書いても0が読める!?隠れた重要命令INVLPGuchan_nos
 
レガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free osレガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free osuchan_nos
 
Building libc++ for toy OS
Building libc++ for toy OSBuilding libc++ for toy OS
Building libc++ for toy OSuchan_nos
 
プランクトンサミットの歴史2019
プランクトンサミットの歴史2019プランクトンサミットの歴史2019
プランクトンサミットの歴史2019uchan_nos
 
Introduction of security camp 2019
Introduction of security camp 2019Introduction of security camp 2019
Introduction of security camp 2019uchan_nos
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2uchan_nos
 
USB3 host driver program structure
USB3 host driver program structureUSB3 host driver program structure
USB3 host driver program structureuchan_nos
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)uchan_nos
 
1TB/dayのログを収集・蓄積する技術
1TB/dayのログを収集・蓄積する技術1TB/dayのログを収集・蓄積する技術
1TB/dayのログを収集・蓄積する技術uchan_nos
 

More from uchan_nos (20)

MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続するMikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続する
 
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
 
小型安価なFPGAボードの紹介と任意波形発生器
小型安価なFPGAボードの紹介と任意波形発生器小型安価なFPGAボードの紹介と任意波形発生器
小型安価なFPGAボードの紹介と任意波形発生器
 
トランジスタ回路:エミッタ接地増幅回路
トランジスタ回路:エミッタ接地増幅回路トランジスタ回路:エミッタ接地増幅回路
トランジスタ回路:エミッタ接地増幅回路
 
自作言語でお絵描き
自作言語でお絵描き自作言語でお絵描き
自作言語でお絵描き
 
OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会
 
サイボウズ・ラボへ転籍して1年を振り返る
サイボウズ・ラボへ転籍して1年を振り返るサイボウズ・ラボへ転籍して1年を振り返る
サイボウズ・ラボへ転籍して1年を振り返る
 
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道USB3.0ドライバ開発の道
USB3.0ドライバ開発の道
 
Security Nextcamp remote mob programming
Security Nextcamp remote mob programmingSecurity Nextcamp remote mob programming
Security Nextcamp remote mob programming
 
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
 
1を書いても0が読める!?隠れた重要命令INVLPG
1を書いても0が読める!?隠れた重要命令INVLPG1を書いても0が読める!?隠れた重要命令INVLPG
1を書いても0が読める!?隠れた重要命令INVLPG
 
レガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free osレガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free os
 
Building libc++ for toy OS
Building libc++ for toy OSBuilding libc++ for toy OS
Building libc++ for toy OS
 
プランクトンサミットの歴史2019
プランクトンサミットの歴史2019プランクトンサミットの歴史2019
プランクトンサミットの歴史2019
 
Introduction of security camp 2019
Introduction of security camp 2019Introduction of security camp 2019
Introduction of security camp 2019
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
 
Timers
TimersTimers
Timers
 
USB3 host driver program structure
USB3 host driver program structureUSB3 host driver program structure
USB3 host driver program structure
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
 
1TB/dayのログを収集・蓄積する技術
1TB/dayのログを収集・蓄積する技術1TB/dayのログを収集・蓄積する技術
1TB/dayのログを収集・蓄積する技術
 

OpeLa セルフホストなOSと言語処理系の自作