LoginSignup
7
5

アセンブラの記事を1,000集め、いいね(LGTM:look goods to me)を1,000に、Viewsを100,000にする計画を立てた。

この記事の重複があれば、適当に調整して、計数は重複なしにしようと思った。
現在、確認中。

目標達成できずにめげるといけない。
現在、どの記事を集計すれば、その値に達するかの表を作ってみた。
目標はあくまでアセンブラだけ。

Title items views goods stocks
アセンブラへの道 https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2 340 31105 321 343
アセンブラへの道(2) https://qiita.com/kaizen_nagoya/items/2a0bd88216bc51278be5 130 1585 11 13
アセンブラ入門への入り口 https://qiita.com/kaizen_nagoya/items/0bf939143593fbb7114a 1630 6 3
CPUの歴史と言語・OS・ネットワーク<書きかけ> https://qiita.com/kaizen_nagoya/items/0148d8a07dfea115dbbe 1102 3 4
プログラミング言語教育のXYZ。Youtube(1) 仮説・検証(52) https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4 4953 7 14
65歳からのプログラミング入門。docker(126)転職(16) https://qiita.com/kaizen_nagoya/items/1561f910c275b22d7c9f 40126 725 554
50歳からのプログラミング言語入門。docker(152) https://qiita.com/kaizen_nagoya/items/5c7cec79cb3b15237076 1588 9 5
RTL設計スタイルガイド Verilog HDL編(System Verilog対応版)https://qiita.com/kaizen_nagoya/items/4c02f1575db1f28310a7 25274 48 43
C言語(C++)の理解、溶解、爽快。仮説・検証(173) https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a 10053 63 65
合計 470 117416 1193 1044
目標 1000 100,000 1000 1000
アセンブラだけ 470 34320 338 359

アセンブラ入門への入り口 &名古屋のIoTは名古屋のOSで

https://researchmap.jp/jowkoc1zp-45644/

という記事を2012年に記述してから6年経過した。
Qiitaのアセンブラの記事の少なさから、

Qiitaで組立語(assembler)・機械語(machine language)・CPU<アセンブラへの道>
アセンブラへの道

という記事で整理を始めた。量が多くなり、編集速度が極端に落ちた。一部分割した。

アセンブラへの道(2)

信頼性:ソフトウェアとコンピュータ

ソフトウェアのオープンソースの信頼性を高めるためには、コンピュータの信頼性を確保することが基礎になると考えています。

コンピュータの基礎は、論理回路です。論理回路は、Verilog-HDL,VHDLで記述できます。System C(C++)でも記述できます。
これらの記述のソースコードもオープンになっている場合があります。

機械語、アセンブラ

コンピュータとソフトウェアの接点は、機械語,あるいはアセンブラです。

ここで機械語は0と1で記述できるものと、0と1で記述したものの16進表記とします。

16進表記したものと、1対1対応できる文字で表記したものをアセンブラとします。

では、どういう順番に勉強するとよいか、いくつかの道があると思います。

1 直球勝負:CPUの創りかた

機械語を定義し、論理回路を作る。
51ATDABNHEL.SL160.jpg

CPUの創りかた, 渡波 郁, 毎日コミュニケーションズ(2003/10/01)
https://www.amazon.co.jp/dp/4839909865

ここでは4ビットCPUを定義しています。TD4という命名です。

この派生で、2ビットCPUを定義された方がおみえです。
TD2という命名のようです。
「2bitCPUなので、処理は2bitで行います。命令は4種類です。レジスタはAレジスタのみとしました。命令フォーマットは、オペレーションコード2bit(■■)、イミディエイトデータ2bit(□□)の計4bit(■■□□)としました。入力ポート、出力ポートまでは面倒見切れないので省きました。ペンティアムにもI/Oの機能はありません。いい訳です。
 命令は次のようにしてみました。AはAレジスタ、Imはイミディエイトデータです。

   ADD A,Im 00 AレジスタにImを加算
   MOV A,Im 01 AレジスタにImを転送
   JNC Im  10 フラグが1ではないときにIm番地へジャンプ
   JMP Im  11 Im番地へジャンプ

回路図などもTD2の頁にあります。

演習問題 このアセンブラで、何種類のプログラムが書けるか。

そのプログラムの可能な振舞の種類はいくつあるか。

前提条件として、回路図の例だけでなく、どの番地から始めるかを指定できる仕組みがあってもよい。ただし、回路図以外の前提条件は、付加回路を記述するか、前提条件を記述すること。

フラグレジスタの定義は、回路を見れば解読できます。
ただし、フラグレジスタの定義を独自にしてもよい。例えば,加算して桁溢れでフラグレジスタが1になる。それ以外の計算でフラグが0になる。

リセット回路を複雑にしてもよい。例えば,リセット回路に,とび先番地を与えることができるようにしてもよい。イミーディエートデータでは、00, 01, 10,11番地にしかアクセスできない。リセット回路で、100番地の値を読んで,その番地から事項できるようにしてもよい。また、リセット実行時のフラグレジスタの値を101番地から読んで設定するようにしてもよい。

2 直近勝負

CPUは完全に定義し、試験してあることを前提に、ソフトウェアの挙動だけを検討する。

8ビットCPU

intel8080,
intel 8085,
ザイログZ80
モトローラ6809,
MOS Technology 6502
日立 H8

16ビットCPU

intel 8086
モトローラ MC68000
DEC PDP-11
三菱電機 M16C
NEC V30

32ビットCPU

DEC VAX
intel 80386
モトローラ MC68030
サン SPARC
アーム ARM7
IBM PowerPC
MIPS

64bit

インテル X86-64
アーム ARM64

3 仮説勝負

実在しないCPUの命令後体系を考える。
プログラミング言語に適したCPUを想定し、実装が存在しないか、ソフトウェアのシミュレータだけ。
あるいは、過去には存在していたが、現在はシミュレータだけのもの。

参考資料

RUST入門

<この項は書きかけのため順次追記します。>

文書履歴

1.0 researchmapにて 20120422
2.0 Qiita初稿 20180716
2.1 リンク切れて異性 20211014
2.2 アセンブラ集計表追加 20211016
2.3 みだし整形 20211019

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5