タグ

gccに関するtrashsuiteのブックマーク (5)

  • LLVM - Wikipedia

    LLVM(エルエルヴィーエム、 またはエルエルブイエム)とは、コンパイル時、リンク時、実行時などあらゆる時点でプログラムを最適化するよう設計された、任意のプログラミング言語に対応可能なコンパイラ基盤である。当初は、LLVMの名称の由来は、Low Level Virtual Machine (低水準仮想機械) の略であるとしていたが[3]、現在は、何の頭文字でもないとしている[4]。 概要[編集] LLVMは、プラットフォームに依存しない中間表現であるLLVM-IRを生成し、LLVM-IRを特定のマシンの機械語などに変換する。LLVM-IRの段階で、言語やプラットフォームとは独立した最適化を行う。この方法によってLLVMは言語からもアーキテクチャからも独立しており、それぞれに特化した、プログラミング言語固有のモジュールと、マシン向けコード生成部を用意することにより様々な言語アーキテクチャーに

  • off-by-one error でreturn addressが上書きされるまで - memologue

    Phrack Magazine (http://phrack.org/phrack/55/P55-08) の off-by-one exploit を読みました。要約しておきます。 void func(const char* sm) { char buffer[256]; for(int i=0; i<=256; ++i) { // 255が正解 buffer[i] = sm[i]; } } int main(int argc, char** argv) { func(argv[1]); return 0; } このような、1バイトだけオーバーフローするbugのあるコードを書いてしまい、更に引数 sm に自由なバイト列を設定できる場合、それがどのようにして arbitrary code execution に繋がるかが書いてあります。 以下、簡単な解説です。 buffer[256] には

    off-by-one error でreturn addressが上書きされるまで - memologue
    trashsuite
    trashsuite 2010/04/13
    『gccはデフォルトで、スタックの末尾を16バイト境界にアラインさせる』
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • UNIX USER 掲載記事一覧

    第三部開始に向けて 私達は18回におよぶ連載を通じて、どのような環境に置かれても、自力で道を切り開けるだけの基礎体力を身につけました。そこで、いよいよGCCプログラミング工房第三部の幕開けです。これからしばらく、PC/AT ハードウェアの最深部を探訪する旅が続きます。 UNIX USERの読者の方々であれば、カーネルに興味を持ち、そのソースツリー解読に挑戦した経験をお持ちの方は多いことと思います。しかし、その挑戦のほとんどは、最初のブートプロセスで頓挫してしまったのではないでしょうか?カーネルの起動を完全に理解するためには、周辺デバイスに関するハードウェアレベルの知識が必要とされるため、これは仕方がありません。 ところが、書店に足を運んでみれば分かりますが、キーボードやVGAディスプレイ、フロッピーディスクやRS-232Cなどの基I/O装置を、機械語レベルで直接制御する方法に触れた書籍は

    trashsuite
    trashsuite 2009/07/07
    無性に GCCプログラミング工房を読みたい.単行本化されると思って本誌を処分した当時の自分が憎い
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 1