タグ

GCCに関するlike_futsalのブックマーク (4)

  • アセンブラを混ぜてコンパイルするとスタックが実行可になってしまう話 - Qiita

    #include <stdio.h> #include <string.h> int main(){ FILE *fp; fp = fopen("/proc/self/maps", "re"); if (fp != NULL) { char buf[256]; while (fgets(buf, sizeof(buf), fp) != NULL) { if (strstr(buf, "[stack]") != NULL) { puts(buf); } } fclose(fp); } return 0; } [rarul@tina ~]$ gcc -c -o main.o main.c [rarul@tina ~]$ gcc -c -o asm.o asm.S [rarul@tina ~]$ gcc -o stack_exec main.o asm.o [rarul@tina ~]$ ./s

    アセンブラを混ぜてコンパイルするとスタックが実行可になってしまう話 - Qiita
  • KMC Staff Blog:gccの便利なオプション (-save-temps)

    2009年07月30日 gccの便利なオプション (-save-temps) 私がよく使うgccの -save-temps というオプションを紹介します。 gccはCのソースプルグラムをコンパイルするときに、プリプロセッサ、コンパイラ、アセンブラ、リンカがそれぞれ動作し、その間のやりとりには中間ファイルが作成されます。 通常は中間ファイルはテンポラリディレクトリに作られて用が済んだら消されてしまいます。しかし、gccにコンパイルオプション -save-temps をつけるとこれらの中間ファイルがカレントディレクトリに作られてそのまま残ります。 $ gcc -save-temps hello.c とすると、 hello.i, hello.s, hello.o がカレントディレクトリにできます。 hello.i がプリプロセッサを通した後の結果でhello.s がアセンブラ出力の結果です。 コ

  • 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