[HOME]  [リストへもどる]
一括表示

  アセンブラの勉強法 - 文太 06/12/28-12:06 No.1934
  ┗ Re: アセンブラの勉強法 - としき 06/12/30-22:56 No.1945
   ┗ Re^2: アセンブラの勉強法 - 文太 06/12/31-02:18 No.1948

(1934) 1934アセンブラの勉強法  投稿者:文太   2006/12/28(木) 12:06
   コメント数 1


 (主に  #1915 を受けて)(その場では、ちゃんとしたレスをしなくてごめん
なさい>金野さん)

 題、なのですが。ゼロからものにしてやろうとは実は思っていません。どこま
で本気なのかもよく分からないし…。ただ仕組みが分かると、過去ログ読んでた
ときの「?」が解消されることがたまにあって、嬉しいだけなのです。ま、文太
の「結局」はおいておいて。

 具体的にどういう風にしましたか? ということなのですが。

 (正確に分かっているとは言えませんが)stdio.h と vz.inc の違いというか
共通の性質については朧気なイメージはあるにはあります。
 きっと、今回の場合、ナツメ『システムコール』本のサンプルを試す人のため
に、共通の基礎部分を stdio.h  などとしてマクロ化しているのだと思っていま
す。  で、(たとえばですが)金野さんの場合、いきなりVzのソースですか?
それとも『システムコール』本以外の、これでこんなものつくって基礎を固めた、
という経験があったら、お聞かせいただきたいと思ったのです。

 Fコール(あくまで部分)、Vzマクロのマシン語サブルーチン(あくまで部
分)でなく、一般的な道筋としては、(僕の場合)アスキーの『はじめて読むM
ASM』 を熟読すればいいし、ナツメ『MS-DOS マクロアセンブラ入門』(1987
年! 藤木文彦著=いい名前ですね)というのも優しくて悪くないようなのです
が。

 それでも有段者のちょっとした経験談を、と思ったわけです。お時間のあると
きで、ちょびっとだけさわりだけでも、で、もちろん構いませんから。

 ま、写すべし、書くべし、バグで悩むべし、なのでしょうけれど。それっぽく
環境はできたわけですから。地道でない奴。(__ ;)

      - No.1934 -    このTreeへ           [リストへもどる] pre

(1934) 1945Re: アセンブラの勉強法  投稿者:としき   2006/12/30(土) 22:56
参照先:http://www.hinocatv.ne.jp/~toshiki/
    1934 番 文太 さんへのコメント    コメント数 1

段位は持っていないのですが、こういうのはなるべく多くの人の話があった方が
良いと思うので書かせていただきます。

>  具体的にどういう風にしましたか? ということなのですが。

まず、一般論というか精神論というか。
目的があると習得が早い、というのはよく言われる話しだと思います。
この辺は、文太さんが専門かな。
なので、なにか作りたいプログラムがあれば、それだけで随分違うでしょう。


で、もっと個別具体論というか、私がどういう事をしてきたかというと。
私がアセンブラを勉強したのは8ビットCPUの時代です。
BASICからの移行でした。
もっと言うと、BASICのソフトの移植が目的でした。
人間BASICコンパイラ、てなものですね。
なので、ロジックは完成されているので、あとはひたすら置き換え。
1対1ではなく1対多ですが、置き換え可能ですよね。

例えば、

  IF A=B THEN C=0 ELSE C=1

というプログラムがあったとします。
これをザイログニーモニックのアセンブラにすると、こんな感じかな。

  LD A,[A]
  LD B,[B]
  CMP B
  JNZ L1
  LD [C],0
  JMP L2
L1:
  LD [C],1
L2:

もう忘れているから、特にCMP命令のところが妖しいかな。
あとは、どんなレジスタがあるか、代入命令にはどこからどこへ動かせるのがあ
るか、逆にどんな代入が直接はできないか、演算命令や比較命令にはどんなもの
があるのか、それはどのレジスタが対象で、副作用というかフラグは何が変化す
るのか、というのを把握しておく必要があります。全部覚えれば一番いいのでし
ょうが、さすがにそれは無理。私の場合は、雑誌の付録だったかな、A3版1枚
の表裏にびっしりと書かれた一覧表を辞書代わりに使って、ひたすら大学ノート
にコーディングしていました。当時は携帯端末なんてなかったから、乗り物の中
とか授業中(ぉぃ)にコーディングするにはそれしかなかったのです。

そういう経験から言って、「はじめて」シリーズ、教科書としてはいいのですが、
その他に辞書として使えるものがあるのがいいと思います。もちろん、あれらの
本をそのまま使ってもいいでしょうが、でも、教科書と辞書は違いますよね。
ただ、当時のCPUは1枚の紙に全ての命令が掲載できましたが、現在のCPU
では無理でしょうし、それに使わない命令の方が圧倒的に多いので無駄でもあり
ます。となると、「はじめて」シリーズに掲載のニーモニックを抜き出して、自
分で辞書を作るのがいいかな。
ただ、私の場合だけかもしれませんが、この手の資料の場合、一覧性が高い方が
いいです。仮に大学ノートに作るとしても、せいぜい紙3枚6ページまで、可能
であれば、やはり大きい紙1枚にできるだけ情報を詰め込む、入りきらなければ
字を小さくする、というのが使う時には便利でしたね。

と、まぁ、こんな感じですがいかがでしょうか。


>  ま、写すべし、書くべし、バグで悩むべし、なのでしょうけれど。それっぽく
> 環境はできたわけですから。地道でない奴。(__ ;)

書いて悩むのが結局は早道でかつ王道なのかもしれませんが。
私の場合、アセンブラ以外の言語では、読んで覚えるというのも結構ありました。
それも、いろんな人の書いたものをなるべくたくさん読む。すると、一つのこと
を実現するにもいろいろな方法がある、というのがおのずとわかってくるわけで
す。いわゆる、ボキャブラリーが増える、というのに似た効果が期待できます。
昔、BASICが全盛の頃は雑誌にプログラムリストがたくさん掲載されていて、
それはそれはたいそう勉強になりました。

      - No.1945 -    このTreeへ    コメント元:1934 へ [リストへもどる] pre

(1934) 1948Re^2: アセンブラの勉強法  投稿者:文太   2006/12/31(日) 02:18
    1945 番 としき さんへのコメント

としきさん

 長文をありがとうございました。なんかとしきさんの人生が感じられて胸が熱
くなりました。そう、c.mos さんも言ってたけど、「ただ楽しく無心にやる」の
がいいですよね。BASICからアセンブラに翻訳してたとき、きっとそうだっ
たのではないのかな、と思って。そういうのを経験しなかったからなぁ。MS-DOS
3+松→Vz@XP (EOF) では。 僕にとっては、アルファベットの羅列に人の
心があって、こっちの心まで動かそうとしている仕組みがあることを知ったとき
かなぁ。

 辞書を用意する、辞書を作る、というところにはとても共感しました。そう、
何だかわけのわからないものいじり始めてる自分に、これ、とりあえず片っ端か
ら覚えようとしてみたらいいんじゃないか、そんな暗記用マクロでも、まず作っ
たら、と思っていました。例によって仕様も思いついていないのですが。ax, bx,
cx,  dx, ex って意味がある略号なんだぜ、と知ったとき、とりわけそう思いま
した。たかだか3週間前のことですが。

 で、 その後、Emmett さんの「マシン語勉強会」を読み直していて持った感想
は、唯一記憶に残っている感想は、「とにかく窮屈だ」です。窮屈のなかでやり
くりするには、とにかく「関係」を暗記しなければいけない。略号が英語的意味
をもっていても、その先は暗記しかない。だけど、とにかく記憶力が死ぬほど減
退している。 でも、いつもいつも ygear でグレップして blog で飛んでことが
解決するほど甘くはない。やはり、自分の頭だ。よし、記憶力を復活させてやろ
う、なんて思っていました。

 もっともこれは人生における重大問題で、その問題の解決をアセンブラの単語
と熟語と構文にあてていいものだろうか、とは先ほど思っていました。バグをか
かえたままとはいえ、vz.com  は完成しているわけだし。年末なので、色々、色
々、反省することがあるものですからね。

 とにかく、示唆に富む発言でした。ナツメ『システムコール』本を枕にふとん
にはいってみます(冒頭に MS-DOS の仕組みが書いてある)。明日は(今日は)、
ひたすらに肉体労働の大掃除なのです。


 どうか皆様にとって 2007 年がよい年となりますように!

      - No.1948 -    このTreeへ    コメント元:1945 へ [リストへもどる] pre