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

6-2 Visual Studio

N/A
N/A
Protected

Academic year: 2021

シェア "6-2 Visual Studio "

Copied!
41
0
0

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

全文

(1)

ca-6.

プログラムカウンタ

1

金子邦彦

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

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

(2)

アウトライン

6-1

プログラムカウンタの振る舞い

6-2 Visual Studio

でプログラムカウンタの表示

6-3

命令実行サイクル

2

(3)

6-1

プログラムカウンタの振 る舞い

3

(4)

6-1

プログラムカウンタとは

プログラムカウンタには,次に実行すべき命令の アドレスが入っている

4

(5)

5

分岐

変数

age

の値が

12

以上の ときの経路

変数

age

の値が

12

未満の ときの経路

(6)

6

分岐

◇変数age の値 が12以上なら

薄青の経路

◇12未満なら 薄赤の経路

現在実行中

プログラム カウンタ

(7)

7

分岐

◇変数age の値 が12以上なら

薄青の経路

◇12未満なら 薄赤の経路

現在実行中プログラム カウンタ

(8)

8

分岐

◇変数 age の値 が12以上なら

薄青の経路

◇12未満なら 薄赤の経路

プログラム カウンタ 現在実行中

(9)

9

分岐

◇変数 age の値 が12以上なら

薄青の経路

◇12未満なら 薄赤の経路

age

の値が12以上のとき

プログラム 現在実行中 カウンタ

(10)

10

分岐

◇変数 age の値 が12以上なら

薄青の経路

◇12未満なら 薄赤の経路

age

の値が12以上のとき

現在実行中

(11)

11

分岐

◇変数age の値 が12以上なら

薄青の経路

◇12未満なら 薄赤の経路

ジャンプ

age

の値が12以上のとき

プログラム カウンタ

(12)

12

分岐

◇変数 age の値 が12以上なら

薄青の経路

◇12未満なら

薄赤の経路 合流

age

の値が12以上のとき

プログラム 現在実行中カウンタ

(13)

13

分岐

◇変数 age の値 が12以上なら

薄青の経路

◇12未満なら

薄赤の経路 合流

age

の値が12未満のとき

プログラム カウンタ 現在実行中

(14)

14

分岐

◇変数 age の値 が12以上なら

薄青の経路

◇12未満なら

薄赤の経路 合流

age

の値が12未満のとき

プログラム 現在実行中 カウンタ

(15)

15

分岐

◇変数age の値 が12以上なら

薄青の経路

◇12未満なら

薄赤の経路 合流

age

の値が12未満のとき

プログラム カウンタ 現在実行中

(16)

16

分岐

◇変数 age の値 が12以上なら

薄青の経路

◇12未満なら

薄赤の経路 合流

age

の値が12未満のとき

プログラム カウンタ

現在実行中

(17)

17

分岐

◇変数 age の値 が12以上なら

薄青の経路

◇12未満なら

薄赤の経路 合流

age

の値が12未満のとき

プログラム 現在実行中カウンタ

(18)

6-2 Visual Studio

プログラムカウンタの表示

18

(19)

プログラムカウンタの表示操作

19

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

プログラムの実行が中断し

ているときに・・・「ウインドウ」① 「デバッグ」「レジスタ」

② レジスタが表示される

(20)

• Visual Studio

を起動しなさい

• Visual Studio

で,

Win32

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

20

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

演習

(21)

• Visual Studio

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

21

追加

(22)

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

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

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

22

(23)

赤丸がブレークポイント の印

• Visual Studio

で「

age = 20;

」の行に,ブレー クポイントを設定しなさい

(24)

• Visual Studio

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

age = 20;

」の行で,実行が中断することを確認

しなさい

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

24

「デバッグ」

「デバッグ開始」

age = 20;

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

黄色の 矢印

(25)

age = 20;

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

25

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

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

(26)

age = 20;

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

26

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

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

① 「デバッグ」

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

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

EIP に注目

EIP

はプログラムカウンタ

(27)

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

レジスタウインドウの中の

EIP

の変化を確認しな さい.

27

「デバッグ」

「ステップオーバー」

(あるいは F10 キー)

(28)

28

EIP

プログラムカウンタ

アセンブリ言語の中で:

赤丸: ブレークポイント

黄色矢印: プログラムカウンタ

(29)

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

29

「デバッグ」

「続行」

(30)

演習

age = 20;

」の行を「

age = 10;

」に変えて,今の 手順を繰り返しなさい.

ジャンプの様子が変わるので確認しなさい

30

(31)

演習

次のプログラムでプログラムカウンタの値の変化 の様子を確認しなさい.

31

(32)

5-3

命令実行サイクル

32

(33)

Visual C++

言語とアセンブリ言語

33

Visual C++

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

いまから,この3行を図解で説明

(34)

プロセッサの仕組みの概要 34

算術演算ユニット

CPU

アドレスバス

データバス

メモリ

R/W

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

制御系

プログラムカウンタ

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

レジスタ

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

演算などの実行

データ等の記 憶,

スタックの管 理,

比較の結果の

保存 次に実行すべき

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

(35)

算術演算ユニット

Arithmetic and Logic Unit

CPU

アドレスバス

データバス

メモリ

R/W

命令レジスタ

Instruction Register

命令デコーダ

Instruction Decoder

制御系

Control Unit

プログラムカウ ンタ

Program Counter

+命令長

レジスタ Registers

x

y

を足して

z

に入れたい ※この図では,メモリ

の1マスは4バイト

(36)

算術演算ユニット

Arithmetic and Logic Unit

CPU

アドレスバス

データバス

レジスタ Registers

メモリ

(37)

アドレス

メモリをオンに

レジスタ に格納

(38)

アドレス

メモリをオンに

レジスタ に格納

データが転送された

(39)

アドレス

メモリをオンに

2

つのデータが

算術演算ユニットに 与えられる

(40)

結果がレジスタに入る

(41)

アドレス

メモリをオンに.

データを書き込む

参照

関連したドキュメント

本製品の動作には動作環境に記載された Microsoft* Visual Studio* 製品 (以下、Visual Studio*) が必要 です。本製品に含まれる Micsrosoft* Visual

Visual

Visual Studio .Net の場合 プロジェクトの種類は Visual C++ プロジ クトの Win32 プロジェクト Visual C++ プロジェクトの Win32

o Microsoft® Windows Server® 2008 または Windows® HPC Server 2008 では、Microsoft® Visual Studio® 2015 、Visual Studio® 2013、Visual Studio® 2012、Visual

Oracle Developer Tools for Visual Studio は、Microsoft Visual Studio 2008 および Microsoft Visual Studio 2005

プロジェクトの新規作成 (ログイン後の操作) 2-2 ① GD.findi プロジェクトを新規作成してください。

Visual Studio 2010 で ASP.NET 空の Web サ゗ト プロジェクトを新規作成すると、作成されたプロジェク

インテル® Python を Visual Studio で使用する方法について説明します。インテル® Python は、Parallel