タグ

Programmingとcpuに関するtkmcのブックマーク (12)

  • MS-DOS(PC-98)のアプリケーションをC言語で作る - 少ないリソースを酷使する

    前回の記事でPC-98エミュ+FreeDOSの環境でMS-DOSアプリが動くことを確認した. となると,あと思うことは1つ. MS-DOSのアプリケーションを自作したい! ということです. 今回はC言語でMS-DOSのアプリケーションを作ってみましょう. 環境 OS:Ubuntu 20.04 PC-98エミュ:xnp2kai rev.22 d3fe02a FreeDOS(98):20200709更新のHDI形式 Cコンパイラのinstall i8086版GCC フリーのCコンパイラと言えばGCC.便利ですよね. しかし,少し前までGCCは32bit || 64bitのアーキテクチャしかターゲットにしてきませんでした. なので16bitPC-98x1向けのバイナリは生成できなかったわけなんですよね. それが最近,ついに16ビット版GCCが登場しました.しかもDOS環境特化. 詳しい話は以下

    MS-DOS(PC-98)のアプリケーションをC言語で作る - 少ないリソースを酷使する
  • 根っこは同じ! Z80経験者によるx86マシン語はじめ、512byte bootBASIC をmacOS用に移植

    マシン語秘伝の書を片手にx86マシン語入門が楽しい。Z80と8086のレジスタ対応表、根っこが同じと分かれば怖くない。 どちらの設計にも深く関わる、嶋正利さん! 512byteのブートセクターに収まりブートする、x86マシン語で書かれた「bootBASIC」を発見! 世界最小のチェスプログラムの作者でもある、nanochessさんによる著作「Programming Boot Sector Games (PDF ver.)」を片手に、x86の入門として、16bitのリアルモード向けのbootBASICをmacOSの32bitアプリへと移植。 パスカルの三角形が動いた! bootBASICは、使える命令も最小限、マルチステートメントもなしのシンプルなBASIC。固定メモリを使っていた元のコードを .data セクションに移して、si/diを32bit化したesi/ediに変更、BIOSの代わり

    根っこは同じ! Z80経験者によるx86マシン語はじめ、512byte bootBASIC をmacOS用に移植
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • hikalium.com

    仮想86モードでBIOSを呼び出した話 この記事は、自作OS Advent Calendar 2016の一部として作成されました。 大昔の私が、若気の至り(?)で無理やりBIOSを仮想86モードを介して呼び出したという話です。UEFI全盛となった現代では全く役に立たないことをご承知の上お読みください(涙)。 背景 私はその頃、はりぼてOSベースの自作OSの多色対応に取り組んでいて、様々なビット数のモードで描画するための関数群を整備していました。 しかし、はりぼてOSにおける画面モードは、asmhead.nasの中で設定されており、変更を反映するためには毎回コンパイルし直さなければなりませんでした。 せっかく多色対応をしても、画面モードが起動時に決め打ちだと、デバッグするたびに再起動しないといけませんし、そもそも多色対応したのだから、起動した後に画面モードを切り替えるということもやってみたい

    hikalium.com
  • x86のMMUはチューリング完全である

    jbangert/trapcc · GitHub The Page-Fault Weird Machine: Lessons in Instruction-less Computation | USENIX x86のMMU、つまりは割り込みとメモリ変換テーブルは、チューリング完全であることの証明。割り込みとメモリ変換テーブルを活用して、プログラムカウンターを一切進めず、ひたすら割り込みを続けるだけで、任意の演算が可能になる。もちろん条件分岐だってオーケーだ。 このテクニックを使えば、カーネルモジュールのバイナリにとても解析が面倒な難読化処理を施すことができる。なぜなら、通常のインストラクションは実行しないから、何をしているのか、通常のインストラクションを追うだけでは一見して明らかではないからだ。そもそも、既存のKGDBなどは、あまりに頻繁な割り込みがかかるため、まともに機能しなくなるようだ

  • 今日買った本 - 『やさしいアセンブラ入門』

    パソコン好きが知られたからか,会社(部)の図書係になってしまいました。で,早速,「最近の若いのは C/C++ は書けるけどアセンブリが読めなくていかん。ちょっと入門書を買ってきて。」ということに。図書係というのは,要するに雑用係。若いもんばっかが,アセンブリを読めないわけじゃないと思うんだけど。 たしかに,C/C++ プログラマ,なかんづくプロの C/C++ プログラマは,アセンブリを(書けないまでも)読めた方がいい。比べるもんでもないけど,英語よりも必要性が高いんじゃないかと思うくらい。プログラマが直接アセンブリを書くことは稀だけれども,例えば C/C++ でプログラミングしていて次のような問題に当たった向きは,読めるととても便利です。 リリースビルドとデバッグビルドでアプリケーションの挙動が異なる。 Windows で 0xc000001d(illegal instruction)な

  • マルチコア時代の並列プログラミング~ロックとメモリオーダリング~

    ~ ~ nminoru@nminoru.jp http://www.nminoru.jp/~nminoru/ Java VM GC JIT Java IA-64 Web Binary Hacks Binary Hacks #94 CPU Out-of-order load/store Load ( ) Store (Store buffering) (memory ordering) CPU ( ) Binary Hacks #94 Store Buffer Store Store1 Store2 Store3 Load Store buffer Main memory/cache Register Store Buffer Cache Main memory Binary Hacks #94 Pthread mutex IPC semaphore Cmpxchg Lock-free sy

  • プロセッサー・キャッシュ最適化技法

    © 2007, Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 *その他の社名、製品名などは、一般に各社の商標または登録商標です。 プロセッサー・キャッシュ最適化技法 インテル株式会社 ソフトウェア&ソリューションズ統括部 ソフトウェア製品部 2 © 2007, Intel Corporation. 無断での引用、転載を禁じます。 記載内容は予告なしに変更されることがあります。 *その他の社名、製品名などは、一般に各社の商標または登録商標です。 Intel、インテル、 Intel ロゴは、アメリカ合衆国およびその他の国における Intel Corporation またはその子会社の商標または登録商標です。 インテル® ソフトウェア開発製品 L1キャッシュでのアクセスミスは数十クロックのペナ ルティーが生じる L2キャッシ

  • 2回目のC言語で『12ステップで作る組込みOS自作入門 』の通りに組込みOSを作ってみた - 三等兵

    12ステップで作る組込みOS自作入門 出版社 : カットシステム (2010/05) 発行日 : 2010/05 前回の初めてのC言語で『30日でできる!OS自作入門』の通りに初めてのOSを作ってみた - 三等兵は汎用OSでしたが今度は組込みOSです。参考書は『12ステップで作る組込みOS自作入門 』です。こいつぁすげえや。丁寧に仕上げられた良書でした。 「組込み」とタイトルがついているので興味を示す層が狭そうですが、プログラムを書く多くの人にとって役立つ内容だったと思います。 前回は必死にわかんないーわかんないーを連呼しつつ頭を抱えて苦行みたいな感覚でやっちゃいましたけど、今回はそんな苦労もあったからか余裕を持って楽しめました。 書ではWindowsだけではなくLinuxでも開発できるよう解説されているのでどんな環境でも問題ありません。Linux入れるのがめんどくさかった私は例によって

    2回目のC言語で『12ステップで作る組込みOS自作入門 』の通りに組込みOSを作ってみた - 三等兵
  • 初めてのC言語で『30日でできる!OS自作入門』の通りに初めてのOSを作ってみた - 三等兵

    30日でできる! OS自作入門 出版社 : 毎日コミュニケーションズ 発行日 : 2006/3/1 良いです。アカデミックの匂いが良い意味で全くしない。その上での実践的なは日語で他に無いと思います。ガチムチアカデミックの批判にあえて真っ向勝負してるような意欲作です。 正しい知識だの用語だのそんなもんはどうでもいいから手を動かしてやってまえみたいな感じで。こういうのは頭いい人たちから批判されやすいですね。俗物な私にはぴったりでしたが。 書はWindows用のサンプルしかないんですがMac用に整えたので、それ公開するついでに思ったことつらつらと書いときます。 開発環境 Mac サンプルがWindows用なのでいろいろMac仕様にしなきゃいけない(後述) テキストエディタ EmacsだのVimだのなんでもいいので適当に用意 バイナリエディタ Macだと0xEDが良い http://www

    初めてのC言語で『30日でできる!OS自作入門』の通りに初めてのOSを作ってみた - 三等兵
  • Z80 Routines:Math:Square root - WikiTI

    Size Optimization This version is size optimized, it compares every perfect square against HL until a square that is larger is found. Obviously slower, but does get the job done in only 12 bytes. ;------------------------------- ;Square Root ;Inputs: ;HL = number to be square rooted ;Outputs: ;A = square root sqrt: ld a,$ff ld de,1 sqrtloop: inc a dec e dec de add hl,de jr c,sqrtloop ret Small and

  • Outlandish Watch

    あの日 長い橋を渡っていた 知らない多くの人びとが 長い列を成し 想像上の 現実の 渦にさらわれて 帰り道を 歩いていた 続きを読む あまりにも寒いので布団に包まって「不完全性定理」の論文の概要を読んでいた。 まだ理解できたかどうか怪しいけどD言語でメモしてみる。 ちなみにこのD言語の世界では、引数も戻り値もstring縛りです。 続きを読む ゆがんだレンズで 店長のまぶたは融けて ビルに穿たれた 無数の暗い窓からは 一千億の眼がのぞくのさ ラジオの立てる 断定的な音波 ひどく硬質な文言たちに 店長は融かされていくのさ 誰も見たことのないような 目尻からこめかみへ伸びるしわ 空気をちぎるように 店長は声を発する 新聞はしばらく来んよ 飛行機がビルに突っ込んだ あっちはもう戦争だよ 戦争 暗闇は骨の味で 断定は亡霊の悲鳴 正義はいずれ 表現されねばならぬ 窓に穿たれた一千億の眼が 店長をのぞ

    Outlandish Watch
  • 1