intel: アセンブラへの道入り口 coding(44)

アセンブラの記事を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|
|６５歳からのプログラミング入門。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|


# アセンブラへの道入り口
https://researchmap.jp/blogs/blog_entries/view/78451/f56954643a2e9f7907fcc45fe87009c4?frame_id=407644
~~https://researchmap.jp/jowkoc1zp-45644/~~

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

~~Qiitaで組立語(assembler)・機械語(machine language)・CPU＜アセンブラへの道＞~~
アセンブラへの道
https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2

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

アセンブラへの道(2)
https://qiita.com/kaizen_nagoya/items/2a0bd88216bc51278be5

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

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

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

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

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

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

## 1　直球勝負：CPUの創りかた
機械語を定義し、論理回路を作る。
![51ATDABNHEL._SL160_.jpg](https://qiita-image-store.s3.amazonaws.com/0/51423/4d1da463-690f-a19d-2b08-820ddb5e24d9.jpeg)

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はイミディエイトデータです。

```asm
　　　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入門
https://qiita.com/kaizen_nagoya/items/b3a42bf5a849dabe52c5

Ethernet 記事一覧　Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48) 
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網（Wi-Fi）空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

C++ Support(0)　
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding Rules(0) C Secure , MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76

Error一覧(C/C++, python, bash...) Error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

プログラムちょい替え（0）一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

小川清最終講義、小川清最終講義（再）計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53
### 文書履歴
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.