• 検索結果がありません。

5-1 プロセッサの仕組み 5-2 レジスタ

N/A
N/A
Protected

Academic year: 2021

シェア "5-1 プロセッサの仕組み 5-2 レジスタ"

Copied!
34
0
0

読み込み中.... (全文を見る)

全文

(1)

ca-5. レジスタ

1

金子邦彦

(コンピュータ・アーキテクチャ演習)

URL: https://www.kkaneko.jp/cc/ca/index.html

(2)

アウトライン

5-1 プロセッサの仕組み 5-2 レジスタ

5-3 Pentium 系列プロセッサのレジスタ

5-4 レジスタを使うプログラムの例 5-5 Visual Studio でレジスタ表示

2

(3)

5-1 プロセッサの仕組み

3

(4)

プロセッサ( CPU )の仕組み

4

算術演算ユニット

プロセッサ アドレスバスデータバス

メモリ

R/W

命令レジスタ 命令デコーダ

制御系

プログラムカウンタ

(インストラクションポイン タ)

レジスタ

プログラム命令の解読 算術演算,論理

演算などの実行

データ等の記 憶,スタックの管 理,比較の結果の

保存 次に実行すべき

プログラム命令の メモリアドレスを記憶

(5)

プロセッサ

• メモリにあるプログラムやデータが読み出され て,プロセッサで処理される

• プロセッサがメモリに書き込みを行うこともある

5

(6)

5-2 レジスタ

6

(7)

5-2 レジスタとは

• レジスタは,プロセッサの内部にあるデータやプ ログラムの格納場所

• レジスタには名前(レジスタ名)がある

7

(8)

データ格納場所の種類

8

レジスタ キャッシュメ

モリ 一般のメモリ ハードディス

CPU

内部

CPU

の内部

CPU

の外

CPU

の外

レジスタ名 アドレス アドレス セクタ番号,

シリンダ番号

超高速 高速 低速 超低速

極小サイズ 小サイズ 大サイズ 超大サイズ

(9)

5-3 Pentium 系列プロセッサ レジスタ の

9

(10)

Pentium 系列プロセッサのレジスタ

• 代表的なものは

• EAX, EBX, ECX, EDX,

• ESI, EDI,

• EBP,

• ESP,

• EFLAGS,

• CS, DS, ES, SS, FS, GS,

• EIP

10

レジスタの名前がいろいろあるので,

種類分けする

汎用レジスタ ベースポインタ スタックポインタ フラグレジスタ

セグメントレジスタ

名前 種類

プログラムカウンタ

(11)

Pentium 系列プロセッサのレジスタの大きさ

代表的なものは

• EAX, EBX, ECX, EDX,

• ESI, EDI,

• EBP,

• ESP,

• EFLAGS,

• CS, DS, ES, SS, FS, GS

11 Pentium

系列プロセッサでは,

レジスタのサイズは

32

ビットまたは

16

ビット

それぞれ32ビット長

(例)

04001234H

 ※

16

8

それぞれ16ビット長

(例)

3000H 16 ※

4

(12)

フラグレジスタ eflags ( 縮めて EFL)

12

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0

I D

V I P

V I F

A C V

M R

F N

T

IOPL O F D

F I F T

F S F Z

F A F P

F C

F

00000212

フラグの名前

32 ビット長

(13)

5-4 レジスタを使うプログラ ムの例

13

(14)

レジスタを使う例

14

Visual Studio C++ プログラム  

b = a + 20

アセンブリ言語のプログラム

mov eax,dword ptr [a]

add eax,14h

mov dword ptr [b],eax

(15)

レジスタの値の変化

15

次のプログラムで,レジスタの値が変化する

int i;

for (i = 0; i < 5; i++) { printf("%d\n", i);

}

(16)

レジスタの値の変化を見る

16

レジスタ

eax

の値の 変化が右側に表示され

(17)

17

結果の例.

レジスタ

eax

は,最初は初期化され ていない(以前の値が残っている)

(18)

18

逆アセンブルしてみると,

i < 5

」かどうかを調べるのに

レジスタ

eax

を使っている.

最初の表示の時点では,まだ「

i < 5

かどうかを調べていないので,

レジスタ

eax

は初期化されていない

(19)

5-5 Visual Studio でレジスタ 表示

19

(20)

レジスタを使っているのは?

20

ここで, レジスタを使用!

(21)

「 z = x + y; 」部分で行われていること

21

レジスタ EAX を使用

メモリ

変数 x 変数 y 変数 z レジスタ EAX ① 転送

変数 x の値で 上書きされる

3 4

(22)

「 z = x + y; 」部分で行われていること

22

レジスタ EAX を使用

メモリ

変数 x 変数 y 変数 z レジスタ EAX

② 足しこみ

変数 y の値が 足しこまれる

3 7 4

(23)

「 z = x + y; 」部分で行われていること

23

レジスタ EAX を使用

メモリ

変数 x 変数 y 変数 z レジスタ EAX

③ 転送

レジスタ EAX の値で 上書きされる

3 7 4

(24)

レジスタを使っているのは?

24

Visual C++

プログラム アセンブリ言語

同じ意味 同じ意味

同じ意味

命令 命令が対象とする相手である オペランド

eax

レジスタ名

(25)

• Visual Studio を起動しなさい

• Visual Studio で, Win32 コンソールアプリケー ション用プロジェクトを新規作成しなさい

25

プロジェクトの「名前」は何でもよい

演習

(26)

• Visual Studio のエディタを使って,ソースファイ ルを編集しなさい

26

4行追加

(27)

• ビルドしなさい.ビルドのあと「1 正常終了,

0 失敗」の表示を確認しなさい

→ 表示されなければ,プログラムのミスを自分 で確認し,修正して,ビルドをやり直す

27

(28)

• Visual Studio で「 x=3; 」の行に,ブレークポイ ントを設定しなさい

28

x=3; 」の行を

マウスでクリック ② 「デバッグ」→

「ブレークポイント の設定 / 解除」

③ ブレークポイン トが設定されるの 赤丸がブレークポで確認.

イントの印

(29)

• Visual Studio で,デバッガーを起動しなさい.

• 「 x=3; 」の行で,実行が中断することを確認しな さい

• あとで使うので,中断したままにしておくこと

29

「デバッグ」

→ 「デバッグ開始」

x=3;

」の行で実行が 中断している

(30)

• 「 x=3; 」の行で,実行が中断した状態で,逆アセ ンブルを行いなさい.

30

① 「デバッグ」→ 「ウイ ンドウ」→「逆アセンブ

② 逆アセンブルの結果が表 示される

(31)

31

逆アセンブルの結果で,レジスタ名

eax

を確認 しなさい

元の C++ プログラム

レジスタ名

eax

の確認!

(32)

• 「 x = 3; 」の行で,実行が中断した状態で,レジ スタの中身を表示させなさい.手順は次の通り.

32

デバッガーを起動済みで,

プログラムの実行が中断し ているときに・・・

① 「デバッグ」

→ 「ウインドウ」→「レジス タ」

② レジスタが表示 される .

(33)

• ステップオーバーの操作を1回ずつ行いながら,

レジスタ eax の値の変化を確認しなさい.

33

「デバッグ」

→ 「ステップオーバー」

(あるいは F10 キー)

(34)

• 最後に,プログラム実行の再開の操作を行いなさ い.これで,デバッガーが終了する.

34

「デバッグ」

→ 「続行」

参照

関連したドキュメント

Bluetooth® Low Energy プロトコルスタック GUI ツールは、Microsoft Visual Studio 2012 でビルドされた C++アプリケーションです。GUI

Visual Studio 2008、または Visual Studio 2010 で開発した要素モデルを Visual Studio

[r]

システムであって、当該管理監督のための資源配分がなされ、適切に運用されるものをいう。ただ し、第 82 条において読み替えて準用する第 2 章から第

6-4 LIFEの画面がInternet Exproler(IE)で開かれるが、Edgeで利用したい 6-5 Windows 7でLIFEを利用したい..

今後の取り組みは、計画期間(2021~2040 年度)の 20 年間のうち、前半(2021~2029

平成 28 年 3 月 31 日現在のご利用者は 28 名となり、新規 2 名と転居による廃 止が 1 件ありました。年間を通し、 20 名定員で 1

プロジェクト初年度となる平成 17 年には、排気量 7.7L の新短期規制対応のベースエンジ ンにおいて、後処理装置を装着しない場合に、 JIS 2 号軽油及び