0.0.1 • Published 6 years ago

cryptoasm v0.0.1

Weekly downloads
1
License
MIT
Repository
-
Last release
6 years ago

CryptoAsm

CryptoAsmは仮想アセンブラです。
実行できる命令は1つ、データの移動だけです。
C言語のポインタの理解に役立ちます。

https://ztaku.github.io/cryptoasm/

レジスタ

レジスタにはaとpがあります。pはメモリのアドレスを指し示します。

mov p,a

pレジスタにaレジスタの値を入れます。

数値

mov a,1

aレジスタに数値の1を入れます。

メモリ

メモリには0番地から6番地があります。ここにデータを格納します。 番地のことをアドレスとも言います。

変数

変数i,j,kと配列lが使えます。 変数iはメモリの0番地、jは1番地、kは2番地に値を格納します。

mov j,a

aレジスタの値を変数j、つまりメモリの1番地に格納します。

mov a,k

変数k、つまりメモリの1番地の値をaレジスタに入れます。

配列

配列lはl0,l1,l2があり、 それぞれ3番地、4番地、5番地です。

mov a,l[1]

配列l1つまりメモリ4番地のデータをaレジスタに入れます。

mov l[0],a

aレジスタの値を配列l0つまりメモリ3番地に格納します。

ポインタ

pレジスタはアドレスを保持し、そのアドレスに格納されたデータに アクセスできます。

mov p,1
mov a,*p

pレジスタに1を入れます。 aレジスタに1番地の内容をいれます。

1番地の内容が10の時は10を、 1番地の内容が20の時は20を、aレジスタにいれます。

mov p,2
mov *p,a

pレジスタに2を入れます。 2番地にaレジスタにの内容をいれます。

ポインタ 2

mov p,2
mov *p+1,a

pに2を入れます。 それに1を足したアドレス、つまり3番地にaレジスタの値を格納します。

アドレス

変数のアドレスを取り出します。

mov p,&j

pレジスタに変数jのアドレス入れます。 変数jは1番地ですからpに数値1を入れることになります。

以下の命令はありません。

mov &j,p ;(NG)

&jは数値1を意味します。数値の1にpレジスタの値をいれることはできません。

命令行

実行する命令を並べてあります。 1行ずつ編集できます。

step実行ボタン

stepを押すと1命令ずつ実行します。

reset実行ボタン

resetを押すと最初の命令に戻ります。

insertボタン

insertを押すと命令行を増やすことができます。

インストール

mkdir crypto
cd crypto
npm install --save nw

プログラムの実行

nw.jsで実行できます。

..\node_modules.bin\nw

CryptoAsm is virtual assembler.

It is an assembler to understand the point of C language.

mov p,1 ; p <- 1. Register p has address 1 of memory. mov a,*p ; Register a <- Contents of memory address 1.