Udostępnij za pośrednictwem


Visual Studio には逆アセンブラがついています

 Windowsのアプリケーションや Webアプリケーションなどを構築するうえで、アセンブラ言語を使うことは、一部のドライバ系・制御系のプログラムを書かれる方を除いて非常に少なくなりました。
 
 以前は C/C++言語でアプリケーションのプログラムを書くことさえ「それでは処理が遅くなる」と言われて、泣く泣く一部を x86アセンブラを使って書いたり、インラインアセンブラを使用したり、もしくは C言語コンパイラにいったんアセンブラのソースコードを吐かせて、無駄な処理をしている部分をごっそり書き換えたりするといった形で、アセンブラ言語は欠かせない存在でした。
(※ 軽く20年くらい前の話ですが)

 
 時は流れて今では、アセンブラ言語を使わないのはおろか、VC++を使ってネイティブコードを書くことでさえも既に高速化のための手段とされる風潮さえあると思います。
 通常はVBやC#などを使ってマネージドコードを書き、どうしても処理速度にこだわる必要がある場合のみC++のお世話になる、といったスタイルが、私などの場合にもあてはまります。
 
 しかし、どんなに時代が流れても、現状やっぱりCPUの上で最終的に実行されているのは機械語のコード(=アセンブラ言語と1:1対応)ですから、アセンブラ言語の存在なくして今のこのPCの世界もあり得ない、と言っても間違っていないと思います。
 
 そして、Visual Studio は今でも逆アセンブリ機能をサポートしています。
 
 何かVC++などでアプリケーションを作成してステップ実行し、メニューの デバッグ | ウインドウ | 逆アセンブル とたどっていただくと・・・
 

 
 

 見事にアセンブラ言語の状態でのコードが表示されます。
 

 
 
 もちろんこれはただの飾りではありません。
 この逆アセンブリ画面は、デバッガのステップ実行と完全に連動していますので、このままステップ実行をしながらデバッグすることもできますし、途中でどうしてもわからないクラッシュなどの問題が発生する場合に、ヒントになる場合もあると思います。
 
 なお、この機能はVisual Studio 2010 の新機能というわけではなく、Visual Studio 2008 にもありましたし、今手元にないので再現できませんが、もっと前のバージョンのVisual Studioからずっとサポートしている機能になると思います。
 
 他のコンポーネントとの依存性の強い今日のプログラミングでは、この逆アセンブルもどの程度役に立つかわかりませんが、それでもこのようにアセンブラのソースを見るだけでも、精神的にプログラミングの原点に返ることができるかも知れませんね。