タグ

コンパイルに関するlike_futsalのブックマーク (8)

  • DLLを使おう!!

    DLLプログラミングは、ウィンドウズプログラミングと切っても切れない関係……のはずなのに、結構わかりにくいんですよね。そういう部分をまとめてみました。 「DLL」。この名称は「Dynamic Link Library」の略です。日語に訳すと「動的にリンクするライブラリ」といったところでしょうか<一語しか訳してないやん。 通常アプリケーションを作製する場合、「各ファイルをコンパイルする」-「作製されたオブジェクトファイルをリンクする」という手順(いわゆる「ビルド」と呼ばれるもの)を踏んで「実行ファイル(Exeファイル)」が作製されます。 アプリケーションはいっぺんにすべてが作られるわけではなく、ソースファイル単位でまず「コンパイラ」が「オブジェクトファイル」というものを作り、次に「リンカ」が各オブジェクトファイルをくっつけ、「実行ファイル」にします。 この「ビルド時にリンクする」ことを「静

  • 二週間で簡単なインタープリタ言語を実装してみた (日記) - プログラムモグモグ

    私は昔から言語処理系に興味があり、自分で言語を作ることを夢見てきました。 しかし、いざ言語を実装しようと思って言語処理系に関するを読んでも何から手を付けていいか分からず、アセンブラもまともに読めないまま、数年が経ってしまいました。 大学時代は情報系ではなかったため、コンパイラの実験がある情報系の学科のカリキュラムを羨ましく思い、情報系の授業の教科書を手にとって見ても読む気が起きず、自分に作れるのは所詮、構文木をちょこっといじって変換するレベルのもの (例えばsjspなど) にとどまっていました。 そんな中、去年のRebuild.fmで、とても感銘を受けた回がありました。 LLVMのlinkerであるLLDを開発されているrui314さんの回です。 rebuild.fm セルフコンパイルできるC言語のコンパイラを実装するという話のなかで、インクリメンタルに開発する重要性について話をされてい

    二週間で簡単なインタープリタ言語を実装してみた (日記) - プログラムモグモグ
  • コンパイル中にコンパイルする「コンパイル時Cコンパイラ」をつくった話 - kw-udonの日記

    僕は先日、「コンパイル時Cコンパイラ」なるプログラムをつくって、公開した。 「コンパイル時Cコンパイラ」とは、コンパイルするとC言語プログラムのコンパイルが行われるというようなC++プログラムである。 C++のコンパイル中に C言語プログラムのコンパイルを行う、 "コンパイル時Cコンパイラ"をつくりました #ELVMhttps://t.co/kKiLU3rLFX— うどん (@kw_udon_) 2016年11月18日 自分で書いておいてなんだが、「なんのこっちゃ」という感じではある。(ちゃんと記事中で説明する。) 実際、変なプログラムではあるのだが、とても嬉しいことに多くの人に面白がっていただき、予想だにしなかった大きな反響をいただいた。 Hacker Newsで1位になったり、LLVMの公式ブログで紹介されたり、果てはC++の作者であるBjarne Stroustrupにも言及されるに

    コンパイル中にコンパイルする「コンパイル時Cコンパイラ」をつくった話 - kw-udonの日記
  • わずか500行のCソースコードで作られたCコンパイラ「CC500」 | ソフトアンテナ

    Cコンパイラといえばとてつもなく複雑なプログラムというイメージがあります。ところが、このCコンパイラを(サブセットとはいえ)わずか500行ほどのCのソースコードで実現した「CC500」名付けられたプログラムが公開されています。 ソースコードは可読性を維持するためにつけられた空行やコメントを含めると、実際は750行ほどになるそうですが、それでもこれだけコンパクトなソースコードで実行可能なELFバイナリ(Linux用のバイナリ)を生成できるのは興味深いのではないでしょうか。 以下実際にLinuxでコンパイルしてみました。 自己コンパイルできる このコンパイラはC言語のサブセットで、自分自身のソースコードをコンパイルできるところがおもしろいところです。まず「cc500_1」という実行ファイルを生成します。 gcc cc500.c -o cc500_1 生成された実行ファイル「cc500_1」を使

    わずか500行のCソースコードで作られたCコンパイラ「CC500」 | ソフトアンテナ
  • C言語がコンパイルされて実行可能になるまでの流れ - にょきにょきブログ

    コンパイルの処理は大きく分けて下記の処理にわけられる。 プリプロセス コンパイル アセンブル リンク この記事では、C言語の Hello World を過程毎に追い、プログラムが出来上がるまでの流れを追う。 登場するファイル main.c - ソースファイル main.s - ソースファイルからコンパイルされたアセンブラソースファイル main.o - アセンブル後のオブジェクトファイル main - 出来上がったバイナリ ソースコード 普通の C 言語の Hello World. 下記コードを main.c として保存する。 #include <stdio.h> int main(){ printf("Hello world!\n"); return 0; } プリプロセス プリプロセスとは、マクロの展開や #include や #ifdef などのディレクティブの処理が行われることを指

    C言語がコンパイルされて実行可能になるまでの流れ - にょきにょきブログ
    like_futsal
    like_futsal 2016/11/12
    [コンパイラ] [アセンブラ]
  • Makefileの書き方 - $ cat /var/log/shin

    まえがき その昔、Makefileの書き方という非常にわかりやすいMakefileの入門ページがあったのですが、seiichirou氏の卒業(?)とともにページが消えてしまいました。 私も大変お世話になったページだった、というかこれからもお世話になりそうなので、そこでWebArchiveから引っ張りだしてきたものを、はてな記法で書き直したものがこの記事になります。 元々自分用に書き直したのですが、せっかくなので公開してみます。 なので、以下の著作はseiichirou氏に帰属します*1。 Makefileの書き方 はじめに ここでは、Makefileの中でもGNU makeにかぎって説明します。 makeって何? ソースファイルを分割して大規模なプログラムを作成していると、コマンドでコンパイルするのが面倒です。また、一部のソースファイルを書き換えただけなのに全部をコンパイルし直すのは時間の

    Makefileの書き方 - $ cat /var/log/shin
  • Cとアセンブラを組み合わせてコンパイルする - 【はてな】ガットポンポコ

    gcc と nasm を使って、Linux上でクロス・ランゲージ・プログラミングを行います gcc と nasm を使えれば、Linuxじゃなくてもできると思います。 クロス・ランゲージ・プログラミング異なるプログラミング言語で記述されたモジュールを組み合わせて開発することを「クロス・ランゲージ・プログラミング」、または「ミックスト・ランゲージ・プログラミング」と呼びます。C言語は、アセンブラと組み合わせてクロス・ランゲージ・プログラミングを行うのに適した言語です。OS記述言語として設計され、BIOSやデバイスと対話する部分はアセンブラで書くという割り切った設計思想を持っているためです。そのため大抵のCコンパイラ(gcc、Borland C++ Compiler、など)は、C言語のソースコードからアセンブラのソースコードを生成する機能があります。 それでは、実際にやってみます。 gcc で

    Cとアセンブラを組み合わせてコンパイルする - 【はてな】ガットポンポコ
  • C言語を使うならMakeを使おうよ - Qiita

    次の理由からいろいろとムズムズしてしまったので、Makeについて書くことにしました。 C言語 Advent Calendar 2015で2日分だけ空きがある。空きが埋まっていればめでたいし、空きがもっと多ければあきらめがつくが…^^;;; C言語でシンプルすぎるブロック崩しを書いた(C言語 Advent Calendar 2015 13日目)は、プログラムも記事も面白いのに、Makefileの書き方が好みではない make触ってみた(ドワンゴ Advent Calendar 2015 20日目) は参考になる情報が多い良記事だけど、結末が好みではない なお、ここで取り上げるMakeは、GNU Makeです。Mac OS Xでコマンドラインツールをインストールしたときや、Linuxでは、makeコマンドを実行すると、GNU Makeが呼び出されるはずです。 また、以下の記述ではMakeの基

    C言語を使うならMakeを使おうよ - Qiita
  • 1