この章では、 C 言語を対象に、 C のソースコードがどのような過程を経てコンパイルされ、実行されるようになるか見ていきます。 利用する言語処理系は、gcc (GNU C Compiler 改め GNU Compiler Collections)です。 この回は、皆さんに情報に触れてもらうのが主旨ですから、 練習問題などはありません。 内容も、詳しい話は全部忘れてもらってもかまいません。 とはいえ、単にファイルを眺めるだけでなく、すこしは実際にコンパイラを動かして試したりして、 馴染んでおいてください。 内容的には、知っている人なら知っているといった話ですから。 C 言語が実行ファイルになるまでの基本的な流れは、授業の方でもならったように C 言語ソースコード (with マクロ) ↓ マクロ展開 C 言語 (マクロ展開済) ↓ コンパイル アセンブリコード ↓ アセンブル オブジェクトコ
システムプログラミング言語とは、システムプログラミングでよく使用されるプログラミング言語のことである。このような言語は、システムソフトウェアを書くために設計されており、アプリケーションソフトウェアを書く場合とは異なる設計アプローチが求められる。 システムソフトウェアとは、コンピューターのハードウェアの操作・制御のために設計されたコンピューターのソフトウェアであり、アプリケーションソフトウェアを実行するためのプラットフォームを提供する。システムソフトウェアのカテゴリーとしては、オペレーティングシステム、ユーティリティソフトウェア、デバイスドライバ、コンパイラ、リンカなどがある。 機能[編集] アプリケーション向けの言語とは違い、システムプログラミング言語は、典型的には、物理的なハードウェアへのより直接的なアクセス手段を提供する。BCPLは、この意味での典型的なシステムプログラミング言語だった
思考実験として、全世界の人が同時に、自分の持っているコンパイラやインタープリタなどの実行ファイルをうっかり全部消してしまったとしよう。そうするとそれ以降、ソースコードが残っていても、コンパイラ自身も含めてどのようなプログラムもコンパイルできなくなってしまう。この状況から人類は元のコンピュータ文明を復旧することができるのだろうか? 僕は結論としては、かなり簡単に復旧できると思う。ここではその手順についてちょっと考えてみよう。 コンパイラのバイナリファイルが全部消えてしまった後、復旧のために目指すべきマイルストーンは、おそらくCコンパイラを元に戻すことになるだろう。Cで書かれたプログラムはOSやコンパイラ自身を含めてたくさんあるので、そこを起点にすれば、たくさんのプログラムを芋づる式に復旧していけるからだ。 ほとんどのCコンパイラはCかC++で書かれている。最近のGCCやClangは巨大かつC
#QEMU code reading #Reference list I've used these documents as a reference. Thank great hackers for all of nice works. - QOM exegesis and apocalypse [http://events.linuxfoundation.jp/sites/events/files/slides/kvmforum14-qom_0.pdf] - QEMU Internals: Overall architecture and threading model [http://blog.vmsplice.net/2011/03/qemu-internals-overall-architecture-and.html] - QEMU Internals: Big picture
ここ一ヶ月ほどQEMUのコードとお戯れしていたのですが、 qemuのソースコードもうすぐ読みきりそうなのでどこかにまとめたいんだけど、qemu internalみたいな記事ってどれぐらい需要あるの— 前代未聞 (@RKX1209) 2015, 11月 9 と言ってみた所なんとなく需要がありそうだったので書きました。 本記事ではQEMUの内部実装を追い、具体的な仕組みを見ていきます。もし研究や仕事などでqemuを読む必要がある方や、これから趣味で読んでみようという方はぜひ参考にしてください。 (QEMU internalsというよりはQEMUコードリーディングの方が適切かもしれませんね....) さてここで扱うQEMUはqemu2.4.0でゲストはx86,ホストはx64であると仮定します。 両方共x86系となるとDBTの意味はあまり無く、KVM使ってどうぞという話になるのですが、あくまでコー
前回(part1)rkx1209.hatenablog.com の続きです。 part2では仮想IRQ,チップセット,仮想IO,TCGを見ていきます。 多分part2で終わりです。(時間があればまたいつかpart3とか書いてみたいですね...) ではまず仮想IRQから見ていきます。 6.仮想IRQ QEMUにおいてIRQはIRQState構造体で表されます。 (hw/core/irq.c) struct IRQState { Object parent_obj; qemu_irq_handler handler; void *opaque; int n; }; nがIRQ番号でhandlerがIRQ#nに対応するハンドラです。またIRQStateは(include/hw/irq.h)でqemu_irqにtypedefされているため以降はqemu_irqと呼びます。 では前回見ていたマシン初
「Ten reasons why every programmer should learn C」という記事がありました。 個人的な感想ですが、何と無く言いたい事はわかる気がしました。 ただ、多少誇張している(言い過ぎ/嘘)かなと思いました。 あと、恐らくLinuxとオープンソースなどを念頭において書いているんだろうなと思いました。 ちょっと言いすぎ感も漂う内容でしたが、面白かったので訳してみました。 誤訳や勘違いなどが入っている可能性があるので、詳細は元記事をご覧下さい。 以下訳です。 全てのプログラマはC言語を学ぶべきである。 C言語を学ぶ事により得られる利点は無視できないほど大きい。 C言語を学ぶ事により、仕事の機会に恵まれるだけではなく、コンピュータへの理解が深まる。 1) C言語は、C++やJavaと比べて低レベル(low level)な言語である。 低レベル言語を使ってプログラ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く