Bochs の組み込みデバッガはなかなかよくできています。メモリアクセス、実行命令など、必要なほとんどの情報 (ハードウェアからの実際の入力を除く!) を取得することができるのです。私は Bochs for Windows に付属の bochsdbg.exe を用いていますが、必要なら自分でビルドすることができます。(この辺は簡単な上に面白くもないので省略。) 仮想マシンの構成 仮想マシンの構成はほぼ普段通りに行えばそれだけで OK ですが、CPU については cpu: count=1, ips=1000000 のように、1 秒間に実行する命令数をあらかじめ設定しておくことを強く推奨します。(そうしないと、Bochs の都合で IPS が著しく上下したり、あるいはどんな構成のトレースを行っているのかが分からなくなってしまう。) ここでは 1 MIPS のマシンをエミュレートすることを明示的
ホーム 検索 - ログイン | | ヘルプ Assembler/ForFun(x86_32)/03, x86_32用 デバッグ機能有効化 Bochs をVC++2008でビルド [ Prev ] [ Next ] [ Assembler ] MBR以降のブートローダ周りのアセンブラプログラミングを楽しむのであれば、Windows/Linuxで動作するx86エミュレータ "Bochs" が便利です。Windows用のインストーラEXEをHPからダウンロード出来ます。 コンパイル時にデバッグ機能を有効化すると、BIOSが立ち上がる段階からステップ実行やレジスタ内容の確認が出来ます。Windows用のインストーラでセットアップするとデバッグ機能が有効化された"bochsdbg.exe"も同時にインストールされるので、わざわざコンパイルする必要もありません。 bochs: The Open So
Welcome to the Bochs IA-32 Emulator Project Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms. It includes emulation of the Intel x86 CPU, common I/O devices, and a custom BIOS. Bochs can be compiled to emulate many different x86 CPUs, from early 386 to the most recent x86-64 Intel and AMD processors which may even not reached the ma
この記事は「自作OS Advent Calendar 2014」3日目の記事として書かれました。 まずはじめに、上記リンクを見ていただければ直ぐにわかりますが、自分が主催にもかかわらず1,2日が空きで書いてないです。これについて申し訳ありません。(言い訳ですが多忙につき書いていられませんでした)。 さて、とりあえず、何でもいいから書かないと始まらないということで、3日目として、現在開発中の自作OSの紹介的な話をしたいと思います。 開発リポジトリはこれ https://github.com/mopp/Axel 名前は"Axel"と書いて、"あくせる"と呼んでいます。 通称"もぷりんOS"です。(余談だけど、Mopris(もぷりす)って案もあった) イメージカラーはメタリックレッドです。この時点で、名前の由来がわかる人にはわかるかもしれませんね。 きっかけとしては、元々Linuxとかの中身が気
前回、GRUBから読み込まれて 仮のGDTの設定が完了しましたので、 今回はページングを有効にしてロングモードに入り さらにCのカーネル本体を呼び出します。 今回の記事で作成したソースコードは こちら です。 開発マシンが Linux(x86_64) ならおそらく問題なく make が通ります。 それ以外の環境では x86_64-elf なクロスコンパイラ環境が必要です。 クロスコンパイル用のツール群をしかるべきディレクトリに配置して Makefileの宣言部だけを改造すれば大丈夫かと思います。 また、 GRUB2とQEMUがインストールされていれば make run を実行すると myOS.iso というブータブルCDイメージを生成して起動テストが できます。 と、いっても今回配布するデータはカーネル本体になんの処理も 書いていないので黒い画面にカーソルが点滅するだけですが。。。 続きを
備忘録。Memtest86+ をHDDに入れてGrubから実行すると、 Error 28: Selected item cannot fit into memory というエラーが出て、メニューに戻されてしまう場合の対処。 開発環境のインストールされたLinuxを用意 Memtest86+ のソースコードを入手、任意のディレクトリに展開 ソースコードディレクトリ内memtest.ldsファイルをエディタで開き、.=の左辺を0x100000に変更 OUTPUT_FORMAT("elf32-i386"); OUTPUT_ARCH(i386); ENTRY(_start); SECTIONS { . = 0x100000; // Change to 0x100000 _start = . ; .data : { *(.data) } } make (configure不要) 出来上がったmemt
QEMU User Emulation This page describes how to setup and use QEMU user emulation in a "transparent" fashion, allowing execution of non-native target executables just like native ones (i.e. ./program). In this text, "target" means the system being emulated, and "host" means the system where QEMU is running. Note this setup is incompatible with Scratchbox (both use the binfmt_misc module to register
2010年02月25日 QEMUのもうひとつの使い方: ユーザーモードエミュレーションとbinfmtとchrootの組み合わせ QEMUの上でDebianなどが動いていると、apt-get で簡単にコンパイラなどもインストールすることができます。しかし、そこで実際にビルドを行うととんでもなく時間がかかります。一晩かけても終わらないこともあります。 QEMUには今まで紹介してきたような、システム全体をエミュレートするものの他に、Linuxのユーザーモードのみをエミュレートするものがあります。今回はユーザーモードエミュレーションを紹介します。 ユーザーモードエミュレーションを利用することでビルドにかかる時間を1/10に短縮することができました。 rootstockに隠された技 前回Ubuntuのインストールの時にルートファイルシステムを構築するのにrootstockというコマンドを使いました。
更新が滞ってしまいました・・・全国5000万人の「ときどきWEB」ファンの方々、すいませんでしたm(_ _)m 初心に帰ってページ読み込みの負担を軽減させるには必須技術となる非同期通信。 ちゃんと習得していこうと思います。 jQueryのajax関数とは? いわゆる「非同期通信」というヤツです。 ページ遷移を行わずに足りないデータだけをサーバーにリクエストして読み込むことができます。 Facebookのページ下までスクロールするとどんどん過去の投稿がでてきたり、 Googleマップなどもマップ内を移動したら、ウィンドウのリロードなどをせずともその場所のデータを新たにフレームワークに読み込んだりできますよね。 実際にはJavaScriptとXMLでなんやかんやして・・・ といったちょっとクライアントサイドをかじった程度の素人には敷居が高い技術の様に思えますが、jQueryの関数でajax()
どんなサイトでも,jQuery を召喚する、呼び出し方は、ハッキリ言えば固定. Chromeでも、FirefoxでもSafariでも同じ。console に jquery を取り込みます どんなサイトでもjQueryを使う. document.body.appendChild(function(){ src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"; sc = document.createElement("script"); sc.type="text/javascript"; sc.src=src; sc.onload = function() { /*window.jQuery.noConflict();*/ }; return sc; }() ); src="https://ajax.goo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く