人間がハンドアセンブル際にアセンブリ言語と機械語の対応表を見比べて翻訳する作業を、コンピュータの黎明期に機械語で最初に作られたアセンブラはどのように行っていたのかということを教えて下さい。
プログラミング言語の歴史を考えてみると、(フォン・ノイマン型)コンピュータの黎明期では全てのプログラムは最初人間が直接真空管やディップスイッチのオン/オフを切り替えることで、機械語でプログラムを入力していたと思います。その後アセンブラが開発されたことで、人間はパンチカードやカセットテープなどを通してアセンブリ言語でプログラミングを行えるようになったと聞きました。
アセンブリ言語は機械語と1対1で結びついたもので、アセンブラはアセンブリ言語を機械語に翻訳するのだと言うことは分かります。しかし、パンチカードやカセットテープで入力したアセンブリ言語も、コンピュータにとっては根本的には0/1(スイッチのオン/オフ)という点では変わりはなく、最初のアセンブラはその0/1をどのようにして正しい機械語の0/1に変換することが出来たのでしょうか?
少し質問の意味が分かりにくいかもしれませんが、例えば
MOV B, A //Bレジスタの内容をAレジスタに送る
といったアセンブリ言語は、機械語では
01000000
に相当するかもしれません。しかしコンピュータがパンチカードを読み込んだ時点では
01010100
といった信号として入力されるとしたら、機械語で最初にアセンブラを作成した人はどのようにしてそれを適切な機械語(ここでは01000000)に翻訳出来たのでしょうか?
想像では最初に機械語で非常に超簡単なアセンブラの原型とも言えるプログラムを作って、それを元にした簡単なアセンブリ言語(の原型)でより高度なアセンブラを作る、といったことを繰り返していまのアセンブラが開発されていったと思いますが、では最初のアセンブラの原型とはメモリ上ではどのように実現されていたのか、ということが気になったので質問させていただきました。アセンブリ言語で実際にプログラムのイメージはこんな感じでは?ということを書いて下さっても構いません。
よろしくお願い致します。
No.1
- 回答日時:
最初のアセンブラですか?
あくまで想像ですが、機械語で書いたと思います。
機械語でアセンブラプログラムを作って、そのプログラムがパンチカードやテープからアセンブラソースコード(テキストコード)を読み込んでアセンブルしたのです。
例えば、マイコンの初期段階では2進コードを入力SW(8ビット分!)で直接RAMに書き込むハードを作ってそれでマシン語を直接入力してましたしね。汎用機でも直接マシン語を入力する方法をカスタマーエンジニア(CE)さんに教えてもらったことがあります。
この回答への補足
ご回答ありがとうございます。
>機械語でアセンブラプログラムを作って、
ということですが、質問の意図としてはそのアセンブラプログラムはどのようなロジックになっているのだろうか?ということです。
僕の推測ではメモリのデータ領域に読み込まれた01010100というデータが、アセンブラによって01000000に変換されるのには、一つずつ01010100と各命令とをCMP命令などで比較していき、当てはまった場合は該当する機械語命令を書き込むといった流れになっていると思ったのですが、この推測は正しいでしょうか?
つまり、
・アセンブラを実行
・アセンブラはパンチカードから入力されたプログラムの最初のデータをレジスタに送る
・CMPでレジスタの内容(この場合は01010100)と各命令の対応表にあるデータ(0010011ならLOAD命令,0010100ならADD命令というように)が一致するか一つずつ比較する
・一致した場合はその命令の機械語をプログラム領域として確保してあるメモリアドレスに書き込む。この場合は対応表から01010100がMOV B,Aと一致するので01000000を翻訳した機械語プログラムとしてあるメモリアドレスに書き込む
・次の行のアセンブリプログラムを読み込み、上記を繰り返す
といった流れになるのでしょうか?
妙な質問かもしれませんが、情報工学を独学で勉強しており、また初心者ゆえC言語やPHPなどのプログラム自体は書けますがそもそも非常に根本的なところでプログラムやコンピュータというのがどう発展してきたのかというところに興味があります。どうぞよろしくお願い致します。
といった感じでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 会社で英語を使うことになっての英語の勉強方法 5 2022/07/03 11:49
- 哲学 大規模言語理論といふもの 4 2023/04/30 09:47
- AI・ロボット 大規模言語モデル(LLM)といふもの 1 2023/05/02 07:24
- 日本語 脳科学の奇妙な言語獲得論 2 2022/04/04 13:13
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- 英語 英語パラフレーズの機械? 昔ネイティブの友達が、英語の文章の単語を類義語に言い換えてくれる機械を使っ 1 2022/12/10 19:24
- YouTube Youtubeとかの外国語の動画に、日本語の字幕をつけたのを自分のアカウントから公開扱いでアップした 1 2023/04/11 00:25
- Google 翻訳 楽天社内での会話 3 2023/02/01 22:08
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- au(KDDI) スマートフォンからgoogle検索が出来なくなってしまった…中国語のエラーメッセージが出ます… 2 2023/01/12 22:48
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
急ぎ!1分程度ってどのくらいで...
-
これ解いてみてください
-
X二乗=−9はをX=にすると何に...
-
しかのこのこのここしたんたん...
-
現代暗号は通信に使われるため...
-
エントロピー
-
QC検定3級の問題です。 どんな...
-
12/11×11/12+100−(−10) 計算し...
-
270万円の6対4の計算式を教え...
-
4を4つ使って1〜100を作って欲...
-
33才でかけ算割り算が出来ない...
-
肉の塊で動く仕組みは?
-
二次関数のグラフで、切片をど...
-
これ以上人生を惨めにしないた...
-
誰も解読できない暗号(符号)を...
-
デジタル信号処理について詳し...
-
数値計算の時間の刻み幅について
-
エンジニアって時間的余裕ある...
-
機械言語はどうやって決めてる...
-
y=1/3xとy=8/3x -14を連立す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ライン数とステップ数の違いは?
-
アセンブラからC言語に変換する...
-
実行ファイルからソースはみれる?
-
アセンブラ言語がわかりません。
-
アセンブラエディタ
-
バイナリの実行ファイルをgccを...
-
ニーモニックコードを使って割...
-
アセンブラで割り算
-
PC-9801でマシン語を学習するに...
-
このアセンブラの意味を教えて...
-
最初のアセンブラ
-
PICはアセンブラとC言語のどち...
-
アセンブラのLA
-
アセンブラ言語で質問です。
-
【H8マイコン】HEWで埋め込みア...
-
PDP-11のアセンブラ課題
-
[C言語→アセンブリ言語]はどう...
-
アセンブラの配列処理
-
PICに書き込むプログラムや変数...
-
PICのアセンブラからC言語へ変...
おすすめ情報