借り初めのひみつきち

仮ブログです。

|ω・`)チラッ

x86 の汎用レジスタのルーツ

x86 の汎用レジスタは AX CX DX BX です。AX BX CX DX ではありません! この由来について 8086 のルーツから探ってみたいと思います。 Intel 4004 Intel が初めて作った CPU は電卓を作るために開発された 4004 でした。 このことから 8086 は電卓の子孫と…

UEFI ゴルフの果てに

前回の記事の UEFI ゴルフの続報です。Hello world はどの環境でも文字列出力関数(API, メソッド, etc...)を呼び出すだけなのでコードはほぼ定型となりコード部分の最適化の余地はほとんどありませんでした。 ゴルフのお題のひとつに CHARS というものがあり…

最小の UEFI Hello World

UEFI は実行ファイルに PE/COFF という形式を採用しています。PE/COFF 形式はご存知の方も多いかと思いますが Windows で現在主流の実行ファイル形式で、名前の通り昔 UN*X で使われていた COFF 形式の派生です。 COFF から PE/COFF になる際にオリジナルの …

GPD MicroPC

正直、 GPD 社に期待はしてるけど今まで出した製品はあまり出来がいいと思ってない Nerry です。エンジニア向けとして期待されていた GPD MicroPC ですが、やっと触る機会ができたので自作 OS の観点から調査してみましたヽ(•̀ω•́ )ゝ✧ 結局、 Portrait なの…

BitTest 命令

x86 には BitTest というマイナーな命令があります。具体的には BT BTS BTR BTC の4種類あって、それぞれ特定のビットをテスト(1かどうか返す)、セット(1)する、リセット(0)する、反転する(0⇔1)命令になります。BitTest 命令をレジスタに使った場合はち…

UEFI自作OS日記 v0.6 再始動

しばらく開発の停滞していた moe ですが・・・github.com思うところあってリファクタリングしながら再実装しています。既存のコードを再利用できるところは再利用していますが、完全に新規に書き直してる部分もあります。これだけだと面白くないので具体的な…

ロングモードと64ビットモードの違い

ロングモードと64ビットモードの違い、分かりますか?おそらく多くの人が混乱していると思うのでブログにまとめます。(そしてぼくは混乱してないことを祈る極論を言うと、現代の x86 系プロセッサにはリアルモード、プロテクトモード、ロングモードの3つの…

IBM PC のタイマー事情

IBM PC の BIOS は通常、約 55ms / 18.2Hz ごとにカウントしています。 この数値は一体どこから来てどんな意味があるのでしょうか?まず、 IBM PC で使われているタイマーIC 8254 PIT の動作クロック入力が約 1193182Hz となっています。 すごく中途半端な値…

フォントエディタ作った。

フォントエディタにいろいろと不満があったので自作することにしました☆(ゝω・)v現在は base64 エンコードした ASCII 形式の FONTX2 のみ入出力できます。 オリジナルフォーマットも考えてるけど実現可能性は未知数です。Electron で作ったので Web でもほ…

地獄のデバッグ

ある日家にあった Surface 3 で moe を起動してみたら、画面が真っ黒のまま進みませんでした。現在の moe はウィンドウシステムが起動する前は基本的に何も画面出力しないので何が起こっているのかさっぱりわかりません。 こういう時はどうしたらいいでしょ…

x86の割り込みが遅いワケ

CPUが現在実行中のプログラムを中断して処理しなければならない事象が発生した時、一般に「割り込み」というメカニズムを使ってその事象を処理します。広義の割り込みは実際には以下の3種類に分類できます。 例外 CPUが命令の実行を継続できない事象が発生し…

最小のEXEファイル?

EXEファイルにはいろいろ形式がありますが、現在主流なのはPEという形式です。これはもともとUN*X方面で使われていたCOFFという実行ファイルの形式にWindowsのために必要な機能を拡張したもので、PE-COFFなどの名称で呼ばれることもあります。 本家UN*X系OS…

世界一有名な人。

世界で最も有名な人は誰だろう?候補をあげるなら一人目は Phil Katz だと思う。 彼は PKZIP を開発し、彼のイニシャルはたくさんの ZIP ファイルの先頭に刻まれている。 また、 ZIP ファイルはしばしば名前を隠して至る所に存在している。 何億台だかの PC …

フォントのお話

さいきん進行中のUEFIプロジェクトをはじめるにあたってちょうど良いフォントがなくてフリーで使えるフォントを探していたのですが、FONTX2フォントってだいぶ配布してるところが減ってきて、ライセンスも不明瞭だったり作者も行方不明で配布元も閉鎖したり…

再度進捗的な。

最近忙しいです・・・

進捗的なもの。

さいきんあまり時間がとれてないですが・・・

UEFI のクロス開発

llvm/clang って全部入りなんですよ。

EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL を置き換える

UEFI で文字を表示するときは EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL を使うのが普通です。

x86 の限界を考えてみた。

一般に 32bit CPU の扱えるメモリの限界は 4GB です。

hello world

ついに現カーネルでアプリケーションが実行できました( ー`дー´)キリッ

RAMFS

OSZ に RAMFS を実装できました。

スクロールの巻。

昨日の TOWNS のテキストスクロールの続きです。

TOWNS のジレンマ

今日は OSZ で FM TOWNS のテキスト表示を改良しました。

64KB の壁。

OSZ がメモリ 64KB で起動するようになりました🎉

最近のあれこれ。

最近何もしてないわけじゃないんですが、出せるものがあんまりないのです。

宗教のお話。

今は Visual Studio Code ユーザーです☆(ゝω・)vキャピ

絵の出る IPL に思いを馳せて。

MEG-OS の IPL は高機能だった。

違和感?

とある機種でデバイスマネージャを眺めてたところ違和感が・・・。

nasmのバグ?

一般にアセンブリ言語と機械語は一対一に対応するとよく言われますが、実際にはそうとは限りません。

MacBook Pro (Late 2016)

ふらっとご飯買いにうろうろしてたら売ってたので買ってみました。