質問: こんにちは 昨日アセンブラについて質問したものです。 MASMというアセンブラを進められたので使ってみようと思い、書籍に手を出す前にサイトで勉強してみようといろいろサイトを回ってみました。 しかし、古い情報や古い環境を前提とするものばかりで(32bit や 16bit ,8bitなどもありました) 当方の64bit環境で実行するのが難しいものばかりでした。 また、アセンブリは環境への依存が強い言語と聞いたのですが昔の情報で勉強しても今のCPUで動かせるかに不安が残ります。 ながなが書いてしまいましたがお聞きしたいことは、つです。 ### 質問 1 アセンブリの環境ごとの違いというのはどれほどのものですか? 例えば8bitでアセンブリを勉強したとしてその知識はどの程度今の64bitCPUに生かせるでしょうか? また、intelのCPUと、AMDのCPU等のようにメーカーが違うとどれほど違うのでしょうか? ### 質問 2 ここまで古い古い文句を言ってきましたが、今のアセンブリに即した内容の入門書,入門サイトはありますか? 当方きわめて初心者ですので(一番進んでいるC言語が入門書レベル)なるべく前提知識を必要としないものでお願いします。 わがままを言って申し訳ありませんが、よろしくお願いいたします。 ### 結局最後やりたいこと OSがどのように動いているかを理解したり、あわよくばOSを作れるようになりたいと思っています。 (なるべく広く意見を聞かせていただきたいのでベストアンサーを付けるのは少し遅くなると思います。申し訳ありません)
回答: うーん、難しい質問ですね。 なお、私は20年ぐらい前まで、アセンブリ言語で仕事をしてた者です。 質問1に、「環境ごとの違い」と書かれていますが、これは8bitや64bitという違いではなく、 CPU個別の仕様によって変わります。 32bitの中でも、x86(Intel)とARMでは全然違いますし、RenesasのSHもまた違い、他の CPUもまた違います。 ただ、色々なルールが違うだけで本質的には同じと私は感じています。 そういう意味では、プログラミング言語自体が、本質的には、ノイマン型コンピュータの 場合、みなルールが多少違うだけ、同じという事にもなるかと思っています。 つまり、C言語もC++もC#もJavaもVisualBasicもアセンブラも、ある意味同じと言っています。 多分、2~3種類のCPUのアセンブラ言語が分かると、私の書いている意味が分かって くると思います。 質問 2についてですが、正直では、誰も新たにアセンブラなんて習得しない だろうと、思われているのか、入門書と実際にプログラムして、動かしてみる環境 が一般的ではなくなっていると思います。 各種CPUのマニュアルを読むと、アセンブラの説明がありますが、 ある意味、すでに複数のCPUのアセンブラが分かった人が読む前提で、 書かれている気もします。(また英語がほとんどです。) 本気で勉強したいのであれば、秋月電子通商あたりで、トレーニングボードを買って そのボード上で実際に動かしてみるのが一番簡単かな?と思います。 (H8,RX,SH辺りなら日本語のマニュアルがあるかと) 逆に言うと、パソコンで動かすのならば、はっきり言ってOSやコンパイラを作る仕事を しない限り、アセンブラ言語は不要となってきてます。 さらに、アセンブラはメンテナンス性、移植性が極端にが悪いので、プロの世界でも、 極力使わないようにしています。 MicrosoftのMASMで作ったコードをアセンブル、リンクして動かす環境も、 現時点では作るのが難しいのではないかと思います。 多分、Windows7 Pro の XP mode 上で、 FreeDOS (または本当のMS-DOSやPC-DOS)を 動かし、その中であれば、MASM で、作ったモジュール動かせると思いますが、 Win8 以降だと、実際の動かすことができないのではないかと思います。 どうしましょうかね。