アセンブラリストをおってデバッグしたい

[戻る]
ガラ 2007/02/28(水) 21:55:33
XP VC++6.0
アセンブラデバッグできるようになりたいのですが、
いい、書籍をご紹介していただけませんでしょうか?
(いまは、ほとんど、わかりません。486系のCPUの構造は、勉強しました。)

自分でさがしたかぎりでは、
「はじめて読むMASM ソフトウェア環境のからくりを学ぶ」
というのがあり、題名は、ほぼ私の要求に該当するものなのですが、
内容は、ぜんぜんわかりません。

tetrapod 2007/03/01(木) 08:51:28
えーと・・・
なぜに今時アセンブラが必要ですか?まったく持ってイランと思うけど。

んで、何がどこまでわかって、何がどこまでわからん?
入門レベルなのか中級なのか?
そーいう話がないと本って薦められんのですけど。

ぬふや 2007/03/01(木) 12:10:09
VCのデバッガはソースコード無しで使うにはあまり向かないので、VC以外のデ
バッガ使ったほうが楽な場合が結構ある。
でも、そうするとVCのラウンジで聞く話ではないかもしれない。

とりあえず、Intelのサイトから「IA-32インテル  アーキテクチャ・ソフトウェア・デベ
ロッパーズ・マニュアル」の「中巻:命令セット・リファレンス(資料番号
245471J)」をダウンロードして下さい。

後は適当にアセンブリ言語のコードを眺めてれば色々判ると思います。

アセンブリコードはVCのコンパイル時に出力させる方法、オブジェクトファイルなど
からVCの付属ツールに出力させる方法、VCのデバッガの混合モード、その他の
ディスアセンブラ、その他のデバッガ、にて入手できます。

ITO 2007/03/01(木) 12:48:14
書籍としては、
  「始めて読む 8086」アスキ−
   (売ってなかったら古本屋もあたってみてください)

なぜ、8086かというと、この本はインテルのアセンブラの基礎を詳しく書いてあるの
思います。

ねふやさんが薦めている、
>「IA-32インテル  アーキテクチャ・ソフトウェア・デベ
>ロッパーズ・マニュアル」の「中巻:命令セット・リファレンス(資料番号
> 245471J)」

を読むためにも先に読んでおくといいと思います。

暇人 2007/03/02(金) 10:42:29
IA-32〜は最初のスレッドでも勧められてるんだけどね…
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200702/07020059.txt

ガラ 2007/03/02(金) 12:39:08
[[解決]]
 ITOさんありがとうございます。はじめて読む8086、当たらせてもらいます。

 暇人 さんのおっしあるとおり、命令セットについては、以前におすすめいただいたも
のがあります。しかし、命令セットだけでは、よくわかりません。

 tetrapodさん、アセンブラをよめる人とそうでない人では、デバッグ力がかなりちが
うとおもいます。

 ぬふや さん、ありがとうございます。VCでは、strlen()など、アセンブラソース(逆
アセした結果ではなく)が表示される場合も多々あるので、デバッグ力を養う意味で読
めるようになっておきたいのです。

tetrapod 2007/03/02(金) 13:01:34
逆アセンブラ表示を見てデバッグの参考になる程度まで力をつけるには
命令セットの理解などは有る意味当たり前すぎの話。
コンパイラのABI仕様を理解するほうが重要だったりしますな。

スタックフレームって何 (EBP の役目とは) とか
__stdcall と __cdecl の違いとか (引数の実装方式とか)
レジスタ保存則とか

C/C++ 初心者ならそんな突っ込みすぎなところに力を割くより先に
やるべき/身に着けるべきことがたくさんあると思う。

アセンブラがわかっていればポインタの理解で躓かないとかあるけどねー
それだったら CASL で十分だったりするので
超難解な x86 をわざわざ学ぶ必要は無いと思う
アセンブラを実用するにはむしろ H8 とかのほうが良いと思うし。

ガラ 2007/03/02(金) 14:12:25
tetrapod さんへ
わたしは、C++初心者では、ありません。
ポインターなどおちゃのこさいさいいです。
あまり、かってな自分の想像でものをいわないでください。
なにをわけのわからないことをいってるのかは、知りませんが、
もうすこし、他人の状況を考えるのも必要だと思います。
それに、逆アセした結果をデバッグするのではありません。
VC++に添付のアセンブラソースがあるのです。
私にアセンブラが必要かどうか、あなたがきめることではありません。

古いスレッドには追加発言できません。