思いは言葉に。 はてなブログは、あなたの思いや考えを残したり、 さまざまな人が綴った多様な価値観に触れたりできる場所です。
思いは言葉に。 はてなブログは、あなたの思いや考えを残したり、 さまざまな人が綴った多様な価値観に触れたりできる場所です。
C言語とアセンブラの対応を理解するには最適化の為のアセンブラ入門がとってもわかりやすい。昼休みに読める。とりあえず頭を整理するためにちょっと書く。アセンブラがちょっとずつ読めるようになってきて楽しい。 #include <windows.h> #include <tchar.h> #include <boost/typeof/typeof.hpp> template <typename T> T __stdcall f(T arg) { BOOL success = FALSE; HMODULE ntoskrnl = ::LoadLibrary(_T("ntoskrnl.exe")); FARPROC ssdt = ::GetProcAddress(ntoskrnl, "KeServiceDescriptorTable"); return arg; } int _tmain(int arg
現在、アセンブラを使わなければならないという状況はあまりありませんが、最適化をする場合はアセンブラを知っている方がなにかと有利です。特に、コンパイラの吐いたコードを吟味することはとても重要です。よってここでは、アセンブラコードを読む能力と、簡単なアセンブラコードを書く能力を身に付けることを目標とします。 この記事は Windows 上で VC++ を使う場合を想定して書いていますが、BCC でも殆ど同じですし、gcc でも少し書き方を変えれば使えます。Intel のプロセッサ上で動く Linux 等でも基本的な部分は同じですし、命令セットの異なるプロセッサでも、基本的な部分は役に立つと思います。ターゲットは Intel Pentium 系プロセッサです。 第0回 アセンブラってどういうもの? 第1回 代入と基本的な演算 第2回 定数とメモリの扱い 第3回 レジスタについて 第4回 分岐命
ファミコン戦士になるべく、ファミコン(NES)のプログラミングを始めた。とりあえず、情報収集と環境設定をした。ので覚え書き。 まず一通り読んだのが以下の2サイト。 ギコ猫でもわかるファミコンプログラミング NES研究室 - from id:cojiさん で、漠然とその仕組みがわかってきた。スプライトや背景とパレットを使って、同じスプライトでも色を変えて表示すると買って仕組みは以前どこかで読んだことがあったし、Z80のアセンブラは昔書いたことがあるので、なんとかなる予感。ところで、ここに6502の命令セットが書かれているけれど、VirtualNESの説明にある「未公開命令」なるものが存在する予感があって、それも含まれているかわからない。ま、まだ今後いろいろ調べていこう。 続いて環境整備。ダウンロードしたものは以下。 cc65 - コンパイラ NESASM - こちらもコンパイラ Virtu
ダンプを解析するときなどはアセンブラを理解していないといけません。勉強しようと思っても最初は意味不明でやりづらいのですが、簡単でわかりやすい方法があります。実務的にはこれで十分だと思いますのでご紹介します。 この方法ではLinuxマシンを用意すればいいだけです。(本を探したり、購入する必要もなし) アセンブラを理解するためにはCPUのレジスタなどを理解する必要があります。私が実際にダンプを解析するときに見るのはEIP、ESPぐらいです。アセンブラからソースコードを解析する場合は少しアセンブラ命令の意味を理解していれば、レジスタは汎用的に使用されるため特別な知識はあまり必要ありません。 まずは下記のようなソースコードを作成して、コンパイルします。( Fedora Core 5 32bit の場合 ) # cat assemble.c #include <stdio.h> int globa
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く