Windows環境でアセンブラプログラミングの知識を習得する方法

このQ&Aのポイント
  • アセンブラプログラミングの知識をWindows環境で習得する方法についてご教示ください。
  • コンパイラの構造に興味があり、自作言語の仮想CPUのコードを生成できるレベルに到達しています。Windows環境で実行可能なコードを生成しようと思っていますが、OSに依存する部分に知識がありません。
  • どのようにしてWindows環境でアセンブラプログラミングの知識を習得すれば良いでしょうか?良い書籍や学習資料があれば教えてください。
回答を見る
  • ベストアンサー

アセンブラプログラミングの知識の習得について(Windows環境)

コンパイラの構造に興味があり趣味で勉強しており、簡単な自作言語について、仮想CPUのコードをはき出すレベルにまでは何とか到達できたというレベルです。 ここでWindowsで実際に実行できるコードをはき出すようにしてみたくなりました。スキルの問題もありますのでGUIではなくてコンソール環境での動作を考えています。 x86のマシン語自体未習得ですが、これは過去に8bitのマシン語プログラムをした経験があるので何とかなると思っています。 問題は、ファイルやコンソールの入出力、メモリの作業領域確保といったようなOSに依存する(?)部分です。 こういった知識を得るには、どこから取りかかれば良いでしょうか? 良い書籍などご存じでしたらご教示下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

>ファイルやコンソールの入出力、メモリの作業領域確保 32ビット空間のメモリ確保を考えると例えウィンドウを出さなくてもWindowsAPIに頼るしか無いと思います。 WindowsAPIは、基本的にC言語からのインターフェイスなので、C言語のアセンブラ出力を解析するのが早道です。 ファイル...CreateFile系 http://msdn.microsoft.com/ja-jp/library/cc429198.aspx コンソール...AllocConsole系 http://msdn.microsoft.com/ja-jp/library/cc429163.aspx メモリ...VirtualAlloc系 http://msdn.microsoft.com/ja-jp/library/cc430204.aspx ついでに、PEファイルの構造 http://codezine.jp/article/detail/420?p=1 16bitのcomレベルで良いなら、MS-DOSのファンクションコールがWindows7からでも使えます。

siffon9
質問者

お礼

うう、Cのアセンブラ出力ですか……書店で目にするコンパイラ本で実装まで書かれたものが見つからない理由が分かったような気がします。 最初は、16bitで挑戦してみたいと思います。 ご回答ありがとうございました。

関連するQ&A

  • Javaの習得に向けたグラフィックスについて

    Javaの習得に向けて学習する場合、ひとえにオブジェクトがどういう風なものなのかを習得するということが主眼になると思います。クラス,メソッド,クラスの継承とか,クラス間での変数のスコープ(これは全言語で共通の学習)とかです。ファイル入出力、ループ、分岐なども全言語共通的なので翻訳可能であり、学習の対象ですらないもののように思えます。 しかし、グラフィカル(GUIを生成して、ブラウザで見せたりする)なところになると急激に視界不良のような印象になります。長い名前のコマンドでイベントリスナーとかフレームとかのオブジェクトとかラジオボタンをペタペタ貼り付けるとかです。それらのグラフィックスの機能というのは、Java独特のクラスとかオブジェクトの学習と関連しているのかどうかわかりにくくなる印象を持ちます。Javaの学習とあのグラフィックスは切り離して考えるのか、それともJavaの学習の結果その応用としてグラフィックス関係の処理が出てくるのか不明な感じになります。もし後者なら学習した内容に照らし合わせた機能と考えて納得させる必要がありますが、前者ならあんまり気にしないでブラックボックスとして処理するということになりそうです。Javaのグラフィックスはどのように理解して学習すればいいのでしょうか。 例えばVisual BasicなどはオブジェクトをGUI的に作ってウィンドウ上に貼り付けてその機能をコード化するということになるので、もう少しわかりやすいというか整理して(分業というか)して処理できそうですが、Javaは全部コード化するので理解しにくい印象があります。たとえばコードがあってその横にグラフィックスが示されているなら、もう少しマシなのですが。Javaの入門書では全くグラフィックスに触れないものあり、それだと通読しやすいです。グラフィックスが出てくると急激に歩みが遅くなるのですが。考え方について教えて頂きたいと思います。 よろしくお願いします。

  • 英語を1095時間で0から習得できるか?

    一年 一日3時間 計1095時間で日本にいながら英語を50万以内で、知能レベルに問題がなく、英語の素養が全くなく、やる気が3時間持続する前提で、間違いなく習得できるといわれているものは存在しますか? ここで想定している到達レベルは日常会話はもちろん。経済や投資の簡単な部分を話すことができ、簡単な大衆向けの投資の本を理解することができるぐらいのレベルです。 数少ない経験から「私と私の友達の3人は9ヶ月でこの方法でマスターできたよ」などといったご回答はご遠慮ください。

  • 中国語と韓国語の習得について

    中国語と韓国語の習得のスピードについての質問です。 努力次第とか興味の有無などそういう理由抜きで、同じくらいの興味関心を持ち、同じ時期に中国語と韓国語を同じ程度のペースで学び、順調に行ったらどちらが先に生活に困らないレベルに到達するのでしょうか?そして、それはそれぞれ何年ほどかかるのでしょうか?平均的なことを教えてください。 あ、ちなみに私は大学で中国語を2年間学び(来年度も学ぶ予定です)、来年度には韓国語を学ぶ予定なので、このような質問をさせていただきました。

  • 外国語習得の向き・不向き

    こんにちは。 大学の工学部の2年生です。 理系ではありますが、外国語に興味があります。 学校の授業で週に英語2コマ、フランス語3コマとっています。 英語もフランス語もあるレベルまではちゃんと到達できるのですが(優が取れるくらい)、得意だ!!と胸をはって言えるにはまだまだです。 文学部の友人は英語はもう卒業、今はフランス語、中国語、ロシア語、カンボジア語を勉強していて、もちろんどれもかなりのレベルです。 そこで、やはり外国語習得には向き・不向きがあるのでしょうか??それとも努力をするか、しないかの違いなのでしょうか?? また、みなさんの考える最良の外国語学習法を教えてください。

  • SoftEtherによるVPN環境。

    現在、DMZの構成でLANを作っています。 LAN内にはServer側のネットワークと、Client側のネットワークの2つが存在しています。 ルータとなるマシンはFreeBSDとなっていて、ファイアウォール機となっています。 またNATサーバーとしても働いており、LAN内から外にでるときにアドレス変換をしています。 そこで、SoftEtherを導入してLAN外とLAN内のClient側とServer側の計3台を仮想ネットワークにつなごうとおもっています。 しかし、せっかく構築したファイアウォールなどのセキュリティを回避してLANの内外が繋がってしまうというのを聞きました。 それがこのソフトの良いところでもあるんでしょうけど、この場合、このセキュリティはどうなってしまうのでしょうか? 結局ファイアウォールが意味ないのではないのでしょうか? といっても多数あるLAN外のマシンでも仮想ネットワーク以外のマシンはちゃんとファイアウォールではじかれるからセキュリティ上の問題はないのでしょうか? SoftEtherを導入して仮想ネットワークを作った状態でセキュリティを再度確保するというのは無意味でしょうか? ちょっと卒研の今後の予定としてVPNを提案されたのですが、それを作ってどうしたいというやりたいことが見つからない為、質問させていただきました。 そしてその仮想ネットワークではセキュリティがなくなるという事を知り、そのセキュリティを確保しなくていいのかな?と思ったのですが、そういうソフトだからセキュリティを確保しても無意味ですよね? SoftEtherを使ってVPN環境を作ってみたい、実験してみたいという気持ちはあるのですが、それをして結局何がしたいという目的がないので、行き詰ってます。 なにか、そこから発展できる面白そうなテーマはないでしょうか。 本来自分で探すべきものなのですが・・・。

  • どれくらい?//ドイツ語習得//

    一ヶ月、毎日一時間の独学で、ドイツ語はどれくらい身につくのでしょうか? 私の環境は以下です。 私は2~3歳の時ドイツに2年ほど住んでいて、帰国後ほぼ毎年一ヶ月程度ドイツのサマースクールに入っています。(現在、高校一年) 今はNHKラジオドイツ語講座を毎日聞いており、参考書+問題集の冊子を自分で進めて勉強しています。(ラジオ講座の時間を抜かして一時間ほど) また、親がドイツ語を職業にしているので非ネイティブにしてはかなりのレベルだと思います。(そのため、質問などはしっかり答えてくれるので先生のような存在です。) 今までちゃんとドイツ語は学んだことはなく。ドイツ語の文法や語彙がほとんど出来ません。 ただ、日常会話は聞き取れ、ほんの少しですが話すことは出来ます。 これから一ヶ月独学でドイツ語を習得しようとしていますが、どのレベルまでいくでしょうか?? レベルはできれば独検の級で示していただけるとありがたいです。

  • ふと考えた語学のスキル習得法・・・

    ○自分の持っているスキルと相手の持っているスキルを1h単位で交換することができるサイトがあったらいいなと思いました。交換の方法は、実際に会って1対1で指導するという塾での個別指導のようなイメージです。 ○大まかな流れは、 (1) サイト上で自分のほしいスキルを持っている人を見つける (2) アドレス非公開でメールを送り、相手も自分の持っているスキルをほしいと思っていることを確認 (3) アドレス非公開で何通かメールを交わした後、相手に信用が置けると思ったら一度喫茶店などの公共の場所であってスキルを確認 (4) スキル1個×個別指導1h(60分)を1単位として自分のスキルと相手のスキルを同じ単位だけ物々交換のような形で交換して個別指導し合っていく。(場所は主に公共の場所・・・例:喫茶店、音楽レンタルスタジオ、公園) という感じです。金銭のやり取りは一切生じません。 ○ページの構成は「出会い系サイト」や「メンバー募集」サイトのような形で、登録者のプロフィールが閲覧できるような感じ。 プロフィールの項目は▽ ・ユーザ名と性別 ・大まかな年齢と住所 ・持っているスキルとそのレベル ・欲しいスキルとそのレベル ・大まかに一週間のうちで空いている時間 ・過去の評価 ※スキルの例: ・英会話(中級、アメリカ5年滞在) ・ドイツ語(初級、大学基礎レベルの文法) ・フランス語(中級、留学経験あり) ・簿記2級(2級以下でしたら問題演習の指導可) サイトの運営は営利目的ではなく社会奉仕が目的です。 と、以上のようにサイトを作ったら需要はありますでしょうか。 サイトの問題点、法律上の問題また、こんなサイトは流行んないとか、ぜひやってほしい等みなさんのご意見をぜひお聞かせください。

  • 仮想環境で使う、Windows 7の種類は?

    仮想環境で使う、Windows 7の種類は? 新iMacを購入予定です。 メインマシンは長年Macで、場合によってWin機も使っています。 Intel Macは今回初体験で、Windows 7 もインストールしてみたいです。 Windowsの使用目的は、ウェブの閲覧時、Macに対応していないサイトがあったときに切り替えて見るためくらいですので、再起動が必要なBoot Campではなく、VMware fusion 3の仮想環境で使うつもりです。 エディションはHome Premiumでいいのではないかと思います。 通常版とDSP版のちがいを調べたところ、通常版では32bitと64bitの両方がインストールでき、DSP版では32bitか64bitかを選択して購入しないといけないようです。 DSP版と32bit、64bitについては調べておよそ理解したつもりです。 色々なアプリや周辺機器の関係するWin機で使用するなら、迷わず通常版を購入しますが、 上記のようにMacの仮想環境でブラウザを使用する程度の場合、64bit版のみでいいでしょうか? もし問題なければ、DSP版のほうがお得ですね。

    • ベストアンサー
    • Mac
  • プログラミングを突き詰めて考えると難しい

    プログラミング(C.C++)を勉強しているのですが、プログラムが実行されるまでの流れの”中身”が分かりません。 ■C言語で書いたプログラム ↓ ■コンパイラ ↓ ■マシン語 ↓ ■CPU だと思うのですが中でどのように処理されているかがよく分かりません。 あと、「マシン語によるプログラミングでは、基本的にCPUが直接解釈できるマシンコードと一対一に対応するニーモニックを使用する。この後アセンブラによってニーモニックをマシンコードに変換し、CPUで実行できるようにする。」と書いてるあったのですが、C言語との違いは何なのでしょうか?どちらもマシンコードに変換するのでおなじプログラムだと思うのですが。 色々調べているうちにこれを理解していくにはかなり難しく、マシン語がどのようにCPUで処理されて結果としてでてくるまでの過程など勉強しなければいけない気がするのですが、わかりやすい参考になる本やサイトがれば教えて頂けないでしょうか

  • フランス語は難しいですよね?

    フランス語って難しいですよね? 基本的な会話レベルに到達するまで約1000時間程度のとんでもない長時間を要する。 必須語彙数の多さ(3000~5000とレベル高すぎ) 鼻母音やrの発音が独特でなじみがないため習得が大変 男性名詞や女性名詞がある ①全部共感できる、難しい ②そうでもない