• Tidak ada hasil yang ditemukan

説明用の簡易モデルによる計算の実行 予め - pweb

N/A
N/A
Protected

Academic year: 2024

Membagikan "説明用の簡易モデルによる計算の実行 予め - pweb"

Copied!
32
0
0

Teks penuh

(1)

説明用の簡易モデルによる計算の実行 予め

主記憶にプログラム・データを

• PC

に実行開始番地

(

通常

0

番地

)

それぞれ書き込んでおいて、

パルスを発生させると動作する。

プログラム・データ

: bit

(

機械語

)

(2)

命令の符号化

(encoding)

命令 番号 符号化

stop 1 001

load 2 010

store 3 011

add 4 100

subtract 5 101

jump 6 110

jump flag 7 111

—電子計算機概論I 2—

(3)

: 87 + 26

を計算する

機械語 アセンブリ 番地 二進 十六進 言語

0 00000 01000100 0x44 load A 1 00001 10000101 0x85 add B 2 00010 01100110 0x66 store C 3 00011 00100000 0x20 stop 0 4 00100 01010111 0x57 A 87

5 00101 00011010 0x1a B 26

6 00110 00000000 0x00 C 0

(4)

アセンブリ言語

(assembly language):

機械語と一対一対応する符丁

(

ニーモニック

)

で プログラムを記述したもの アセンブラ

(assembler):

アセンブリ言語で記述されたプログラムを 機械語に直すプログラム

−→ CPU

の設計

(アーキテクチャ)

によって

それぞれ異なる

(互換性がない)

—電子計算機概論I 4—

(5)

: A

B

とを入れ替える

0 load A

1 store C 2 load B 3 store A 4 load C 5 store B 6 stop 0 7 A 15

8 B 5

9 C 0

(6)

← { }

0 load A

1 subtract B 2 jump flag M

3 load A

4 jump N

5 M load B

6 N store C

7 stop 0

8 A 5 9 B 7 10 C 0

—電子計算機概論I 6—

(7)

: 15 × 3

を計算する

0 LOOP load B

1 subtract D

2 jump flag END

3 store B

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 3

11 C 0

12 D 1

(8)

簡易モデル上でのアセンブリ言語により、

自然数

n

に対して、

1

から

n

までの和

を計算するプログラムを作成せよ

実行前

(入力):

ラベル

A

の場所に

数値

n

が書き込まれている

実行後

(出力):

ラベル

C

の場所に

計算結果の数値が書き込まれている

ラベル

A

の場所以外は

入力

n

に依存してはならない

−→

出来たら提出

—電子計算機概論I 8—

(9)

: S ← P

N1

i=0

A

i を計算する

0 LOOP load N

1 subtract D

2 jump flag END

3 store N

4 load SUM

5 ADD add A

6 store SUM

7 load ADD

8 add D

9 store ADD

10 jump LOOP

11 END stop 0

12 N 5

13 D 1

14 SUM 0

15 A 6

16 37

17 -23

18 25

19 -3

(10)

1 subtract 13 10101101 2 jump flag 11 11101011 3 store 12 01101100 4 load 14 01001110 5 add 15 10001111 6 store 14 01101110 7 load 5 01000101 8 add 13 10001101 9 store 5 01100101 10 jump 0 11000000 11 stop 0 00100000

13 1 14 0 15 6 16 37 17 -23 18 25 19 -3

PC: 00000= 0 Acc: ---= FR: -

—電子計算機概論I 10—

(11)

0 load 12 01001100 1 subtract 13 10101101 2 jump flag 11 11101011 3 store 12 01101100 4 load 14 01001110 5 add 15 10001111 6 store 14 01101110 7 load 5 01000101 8 add 13 10001101 9 store 5 01100101 10 jump 0 11000000 11 stop 0 00100000

12 4 13 1 14 0 15 6 16 37 17 -23 18 25 19 -3

PC: 00100= 4 Acc: 00000100= 4 FR: 0

(12)

1 subtract 13 10101101 2 jump flag 11 11101011 3 store 12 01101100 4 load 14 01001110 5 add 15 10001111 6 store 14 01101110 7 load 5 01000101 8 add 13 10001101 9 store 5 01100101 10 jump 0 11000000 11 stop 0 00100000

13 1 14 6 15 6 16 37 17 -23 18 25 19 -3

PC: 00111= 7 Acc: 00000110= 6 FR: 0

—電子計算機概論I 10—

(13)

0 load 12 01001100 1 subtract 13 10101101 2 jump flag 11 11101011 3 store 12 01101100 4 load 14 01001110 5 add 16 10010000 6 store 14 01101110 7 load 5 01000101 8 add 13 10001101 9 store 5 01100101 10 jump 0 11000000 11 stop 0 00100000

12 4 13 1 14 6 15 6 16 37 17 -23 18 25 19 -3

PC: 01010= 10 Acc: 10010000=-112 FR: 1

(14)

1 subtract 13 10101101 2 jump flag 11 11101011 3 store 12 01101100 4 load 14 01001110 5 add 16 10010000 6 store 14 01101110 7 load 5 01000101 8 add 13 10001101 9 store 5 01100101 10 jump 0 11000000 11 stop 0 00100000

13 1 14 6 15 6 16 37 17 -23 18 25 19 -3

PC: 00000= 0 Acc: 10010000=-112 FR: 1

—電子計算機概論I 10—

(15)

0 load 12 01001100 1 subtract 13 10101101 2 jump flag 11 11101011 3 store 12 01101100 4 load 14 01001110 5 add 16 10010000 6 store 14 01101110 7 load 5 01000101 8 add 13 10001101 9 store 5 01100101 10 jump 0 11000000 11 stop 0 00100000

12 3 13 1 14 6 15 6 16 37 17 -23 18 25 19 -3

PC: 00100= 4 Acc: 00000011= 3 FR: 0

(16)

1 subtract 13 10101101 2 jump flag 11 11101011 3 store 12 01101100 4 load 14 01001110 5 add 16 10010000 6 store 14 01101110 7 load 5 01000101 8 add 13 10001101 9 store 5 01100101 10 jump 0 11000000 11 stop 0 00100000

13 1 14 43 15 6 16 37 17 -23 18 25 19 -3

PC: 00111= 7 Acc: 00101011= 43 FR: 0

—電子計算機概論I 10—

(17)

こうして、

loop

2

巡目に

次の場所のデータを読むことに成功した。

以下略。

(18)

プログラム部分を書き換えてしまうため、

プログラミングし難い

(面倒で、間違い易く、読み難い)

−→

実機では、

指標レジスタ

(index register)

を使って 計算が行なえるように実装するのが普通

—電子計算機概論I 12—

(19)

指標レジスタ

(index register)

命令の番地部の解読の際に、

このレジスタの値を加算して、

実際に読む番地

(

実効アドレス

)

とする

−→

「配列」の実装
(20)

Instruction Register

Instruction Decoder load T2

Accumulator

8 x D-flipflop 8D

T main memory

0 1 2

31 Address

Decoder

multiplexer S D

Index Register adder

—電子計算機概論I 14—

(21)

ともかく、これが出来ると、例えば、

N

個のデータを別の場所にコピーする

プログラム

が書ける

(レポート課題の例)

(22)

データを次々と書き込んで

メモリを一杯にする

自分自身の複製を別の場所に作る

更にその複製に実行を移して

自分自身の複製を繰返す などのプログラムも作れる

(

但し、この簡易モデルでは、

機能限定なので書き難いかも

)

—電子計算機概論I 16—

(23)

とは言え、

こんな簡易モデルでも結構色々出来るので、

色々遊んでみて下さい

(

レポート課題の例

)

(24)

命令の実行

(=

「計算」) とは、

レジスタまたは主記憶の

現在の値

(状態)

に従って、

その値を変更

(書込)

すること

であった

—電子計算機概論I 18—

(25)

計算の理論

プログラム内蔵方式

(von Neumann

)では、

プログラム・データを区別なく

メモリ上に置いていたが、

プログラムとデータとは、やはり本質的に違う

プログラム

:

一つの問題では固定

データ

:

可変な入力

どんな

(

有効な

)

データ

(

入力

)

が来ても、

所定の出力を返すことが要請される

(26)

或る問題の「計算が可能」

m

その計算を行なうプログラムが存在

計算機の機能

( =「計算」のモデル)

を決めて議論する ここでは、代表的な「計算のモデル」を

幾つか紹介する

—電子計算機概論I 20—

(27)

問題を「計算する」とは 入力

(

データ

)

プログラム

出力・動作 原理・理論を考える際には、

出力は最も単純に「

0

1

か」とする

• 0 :

拒否

(reject)

• 1 :

受理

(accept)

(28)

入力

(データ)

プログラム

受理か拒否か

解くべき「問題」

:

入力を受理する条件

—電子計算機概論I 22—

(29)

「問題」の例

入力の範囲: 文字

a, b

から成る文字列

「問題」: 入力を受理する条件

• a

b

との個数が同じ

• a

が幾つか続いた後に

b

が幾つか続いたもの

• a

で始まり

a, b

が交互に並んで

b

で終わる

同じ文字列

2

回の繰返しから成る

回文

(palindrome)

などなど

(30)

それぞれの「問題」に対し、

定められた計算モデルで、

受理/拒否判定が可能

(

問題が解ける

)

?

受理される文字列が

「文法的に正しい」文字列だと思えば、

「問題」とは「文法

(言語)」である

「文法的に正しい」かどうかの判定

· · ·

「構文解析

(syntactic analysis)

—電子計算機概論I 24—

(31)

代表的な計算モデル

有限オートマトン

(有限状態機械)

プッシュダウンオートマトン

チューリングマシン
(32)

q0 q1 q2

q3 a

a b

b a b

a,b

—電子計算機概論I 26—

Referensi

Dokumen terkait

カムチベット語燕門・斯口戛 [Sakar] 方言の文法スケッチ 鈴木 博之 キーワード:カムチベット語、雲嶺山脈西部下位方言群、格体系、動詞接辞

手続き抽象化機能をもつプログラミング言語による 3D 印刷 金田 泰1,a 概要:機械加工や3D印刷をコンピュータを使用しておこなうとき,工作機械や3Dプリンタを手続き的 に制御するためのプログラムが必要になる.この目的のためにひろく使用されているのがGコードであ る.Gコードはもともと切削加工の制御のために開発され,当初は設計者がそれによるプログラムを記述

Python ライブラリを使用した手続き的な 3D 印刷法 金田 泰1,a 概要:機械加工や3D印刷をコンピュータを使用しておこなうとき,工作機械や3Dプリンタを手続き的 に制御するためのプログラムが必要になる.この目的のためにひろく使用されているのがGコードであ る.Gコードはもともと切削加工の制御のために開発され,当初は設計者がそれによるプログラムを記述

ポリシー記述言語に関する動向 ポリシーを記述するにはその構文と意味とをきめる必要があ る. つまり,ポリシー記述言語が必要である. Kosiur [Kos 01] は その標準化の重要性を指摘している. ポリシーは通常は「デー タ」だとかんがえられているが,それが実行可能であるためには プログラミング言語としてのポリシーの意味が記述される必要が ある[Kan

PCとは というように、OSに標準で付属するエディターが利用可能であるが、後述するように無償で 利用することのできる、より高機能なエディターもある。 XHTML html World Wide WebWWWで利用される、ハイパーテキストマーク付け言語Hyper Text Markup Languageというコンピューター言語の一種で記述されたテキスト。タグと呼ばれ

INFORMATION AND COMMUNICATION ENGINEERS 確率過程としての記号処理 — 計算過程のマクロ・モデル —* 金田 泰 新情報処理開発機構 〒305 茨城県つくば市竹園一-6-1 E-mail: [email protected] あらまし複雑な記号処理をおこなう計算システムは,プログラムを静的に理解することによって,

複合語のアクセント 与那国方言の複合語アクセントについては上野 2014, 2015 に詳しく記述されている。 上野 2014 によれば,与那国方言の複合語アクセントでは,2 のようにいわゆる前部要 素の「式保存」は成り立たない。 2 sagi=《酒》A sagikubiN]《酒瓶》C,sagikami]《酒甕》C guma]《胡麻》C

計算の理論 或る問題の「計算が可能」 m その計算を行なうプログラムが存在 ⇓ 計算機の機能 =「計算」のモデル を決めて議論 −→ 代表的な「計算のモデル」を幾つか紹介... 演習問題 ちょっとしたコツtips: 「後に続く文字列が何だったら受理か」 が全く同じ状態は一つの状態にまとめられる。 これが違う状態はまとめられない。