タグ

Cに関するDragonBallEZのブックマーク (4)

  • 超便利!C言語のアセンブラ出力を即確認できるサイト|compiler-explorer

    どんなものか見てみよう! まず compiler-explorer へアクセスしてください。こんなサイトが表示されたかと思います。 サンプルコードとして引数を二乗する関数 square が書かれていますね。左のウィンドウにC言語のコード、右にコンパイル結果のアセンブラがあります。コンパイラは x86-64 gcc 6.3 に設定してありますね。このように、基的な使い方は、左のウィンドウにC言語のコードを書いて右側のアセンブラを確認する、となります。 実際に使ってみよう! さて、実際に使って見ましょう。サンプルコードは 前回の記事 のサンプルコードを使います。 これが実行結果です。今回はウィンドウが3つありますね。左はC言語、真ん中は最適化オプションが -O0、右側は最適化オプションが -O2 です。このように、1つのC言語のコードに対し同時にいろんなコンパイラオプションでのアセンブラを同

    超便利!C言語のアセンブラ出力を即確認できるサイト|compiler-explorer
  • CC500: a tiny self-hosting C compiler

    Introduction I wrote this tiny compiler, which translates a subset of C into x86 machine code, for fun. It has no use, unless it counts as educational. I called it CC500 because I initally guessed it would take about 500 lines. It turned out to be about 600 lines even without the comments and blank lines. With the comments and blank lines it has about 750 lines. It could be made shorter, but I wan

  • C99の仕様

    長い歴史を持ちながら、依然として人気の高いC言語。その最新仕様の情報にキャッチアップするための連載スタート。今回は1999年に策定された「C99」を取り上げる。 連載 INDEX 次回 → C言語(以降、単にC)はDennis Ritchieによって1969~1973年の間にベル研にて開発されたプログラミング言語である。長い歴史を持つと共に非常にポピュラーな言語で、プログラマーでCを知らない人はまずいないと言っていいだろう。プログラミング言語のシェアを調査しているTIOBEでも、ここ最近は常に1、2位を占めている。 Cの言語仕様は今から25年近く前である1989年に初めて規格化され、これは一般に「ANSI-C」と呼ばれている。ANSI-Cは長らくCの言語仕様のスタンダードの位置を占め、世の中の大半のプログラマーは、このANSI-Cに慣れ親しんでいることだろう。しかし、実はCの言語仕様はその

    C99の仕様
  • 安全なシグナルハンドラを実装するには ――C/C++セキュアコーディング入門(4)

    UNIXなどPOSIX準拠のOSでは、割り込みや例外を抽象化した「シグナル」と呼ばれる仕組みを用いてプロセスに(非)同期イベントが通知されますが、シグナルハンドラで行える処理には制約があり、これを無視したコードを書くと脆弱性につながる恐れがあります。今回はシグナルハンドラの制約に関するルールを見てみましょう。 シグナルハンドラの制約 UNIXなどPOSIX準拠のOSでは、割り込みや例外を抽象化した「シグナル」と呼ばれる仕組みを用いてプロセスに(非)同期イベントが通知されます。ユーザが[Ctrl]-[C]キーを押してプログラムを中断しようとしたり(SIGINT)、整数オーバーフローが発生したり(SIGFPE)すると、それらのイベントに対応するシグナルがカーネルからプロセスに対して通知されるのです。プログラマは、これらのシグナルを受信した時に特定の動作を行わせる「シグナルハンドラ」を書くことが

    安全なシグナルハンドラを実装するには ――C/C++セキュアコーディング入門(4)
  • 1