• ベストアンサー

NASMとMASMの違い

NASMとMASNの違いってなんでしょうか? NASMは今日趣味でちょこっと触っただけです。 MASMは触ったことはありません。 実際に動くアセンブリ言語のソースを見てみようと思い、 海外のサイトから適当に*.asmのソースをダウンロードしました。 ソースを覘くと、 \masm32\include\windows.inc と明らかにMASMの何かを参照しています。 NASMではコンパイルできる気がしません。 NASMとMASMでは記述法方が変わるのでしょうか? NASMではMASMで書かれたソースはコンパイルは不可能なのでしょうか? 素人の私が根本的に勘違いしている可能性もあります。 ご存知の方がおられましたら、ご伝授よろしくお願いします。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

windows.inc はWindows のAPIを呼び出す命令を記述するときに わかりやすい記述ができるようにするマクロなどがあるファイルですね。 で、nasmとmasmとでは細かい違いがいろいろありますので、 masmように書かれたものをnasmでアセンブルするのは あきらめたほうがよろしいかと。無論多少の修正を施せば OKの場合もあるでしょう。 http://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/nasm/chap2.html#2.2 にmasmユーザー向けの(nasmを使う上での)注意事項がまとまっています。 masmも無料で手に入らないこともないので、自分が参考にしたいものが masmをつかっているものならmasmでやってもいいんじゃないですかね。 でも、windows.inc があるのってひょっとしてDDKだっけ?

gigigi
質問者

お礼

MASM32を触って見たのですがこっちのほうが資料が多く、私に向いているようです。 D、DDK?ごめんなさい、聞いたことはあるんですが、ちょっとわかんないです。 的違いかもしれないですがMASM32にwindows.incが入っているのは確認できました。 わかりやすいご回答をありがとうございました。

その他の回答 (2)

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.2

参考までに…。 コンパイラ言語で機械語に変換→「コンパイル」 アセンブリ言語で機械語に変換→「アセンブル」 といいます。

gigigi
質問者

お礼

ご指摘ありがとうございます。 読みにくい文章になってしまったようで。

回答No.1

NASM = The Netwide Assembler. MASM = Macro Assembler. NASMはMASMとほぼ同じ文法で組めるアセンブラ言語なので、NASMではMASMで書かれたソースはコンパイル可能なことがあります。しかし、マクロの構成が異なるなど厳密には違いがあるため必ずコンパイル可能なわけではないようです。コンパイルできない部分をNASM用に書き換えることでコンパイル可能になることもあります。

gigigi
質問者

お礼

お礼が遅くなってしまい申し訳ないです。 MASMをNASMに書き換えるには私がMASMを理解しないとダメですね。 ほとんどがMASM用のソースのようですし。 丁寧な解説をありがとうございます。

関連するQ&A