ca-13. サブルーチン

>100 Views

December 23, 21

スライド概要

コンピュータ・アーキテクチャ演習
URL: https://www.kkaneko.jp/cc/ca/index.html

profile-image

金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

ca-13. サブルーチン (コンピュータ・アーキテクチャ演習) URL: https://www.kkaneko.jp/cc/ca/index.html 金子邦彦 1

2.

アウトライン 13-1 サブルーチン 13-2 サブルーチン呼び出しと復帰 13-3 演習 2

3.

13-1 サブルーチン 3

4.

演習 • Visual Studio を起動しなさい • Visual Studio で,Win32 コンソールアプリケー ション用プロジェクトを新規作成しなさい プロジェクトの「名前」は何でもよい 4

5.

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

6.

• ビルドしなさい.ビルドのあと「1 0 失敗」の表示を確認しなさい 正常終了, → 表示されなければ,プログラムのミスを自分で 確認し,修正して,ビルドをやり直す 6

7.

• Visual Studioで「return a * 1.08;」の行に,ブレー クポイントを設定しなさい ① 「 return a * 1.08;」 の行をマウスでクリック ② 「デバッグ」→「ブレー クポイントの設定/解除」 ③ ブレークポイントが 設定されるので確認. 赤丸がブレークポイント の印 7

8.

• Visual Studioで,デバッガーを起動しなさい. 「デバッグ」 → 「デバッグ開始」 • 「return a * 1.08;」の行で,実行が中断することを 確認しなさい • あとで使うので,中断したままにしておくこと 「return a * 1.08;」の 行で実行が 中断している 8

9.

• 「return a * 1.08;」の行で,実行が中断した状態で, 変数の値を表示させなさい.手順は次の通り. ② 変数名と値の対応表が 表示される ①「デバッグ」 → 「ウインドウ」 → 「ローカル」 変数 a の値 120 9

10.

• ステップオーバーの操作を1回ずつ行いなさい. 「デバッグ」 → 「ステップオーバー」 (あるいは F10 キー) みどころ, 黄色の矢印が動く. あるときは foo 関数の中. あるときは main 関数の中 10

11.

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

12.

サブルーチン呼び出しのための call 命令 Visual Studio の C++ プログラム アセンブリ言語の call 命令 「call foo ・・・」 でサブルーチンの先頭へジャンプ 12

13.

コンピュータでのスタックの作り方 事前に,メモリ内に スタック専用エリアを確保 (システムスタックエリア) メモリ 13

14.

コンピュータでのスタックの作り方 最初は空 メモリ 14

15.

コンピュータでのスタックの作り方 ①,②,③の順で プッシュすると・・・ 一番最後にプッシュ した③が一番上 ③ ② ① データが入る メモリ 15

16.

13-2 サブルーチン呼び出しと 復帰 16

17.

サブルーチンとは サブルーチンを 使うように, プログラムを書き換え 類似の処理を1か所 にまとめたもの サブルーチン サブルーチンなし サブルーチンあり 17

18.

サブルーチン呼び出しと復帰 サブルーチンの 先頭へジャンプ (サブルーチン呼び出し) サブルーチンの 先頭へジャンプ (サブルーチン呼び出し) 元のところ(戻りアドレス)へ ジャンプ(復帰) サブルーチン 元のところ(戻りアドレス)へ ジャンプ(復帰) 18

19.

サブルーチン呼び出しと復帰 • プログラムの中から, • サブルーチンの先頭にジャンプ(サブルーチン呼 び出し)して, • あとで戻ってくる(復帰) 19

20.

サブルーチン呼び出しと復帰 復帰 復帰のための ジャンプ 呼び出しのための ジャンプ 呼び出し 呼び出し 20

21.

演習 • Visual Studio を起動しなさい • Visual Studio で,Win32 コンソールアプリケー ション用プロジェクトを新規作成しなさい プロジェクトの「名前」は何でもよい 21

22.

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

23.

• ビルドしなさい.ビルドのあと「1 0 失敗」の表示を確認しなさい 正常終了, → 表示されなければ,プログラムのミスを自分で 確認し,修正して,ビルドをやり直す 23

24.

• Visual Studio で「return a * 1.08;」の行に,ブ レークポイントを設定しなさい ① 「 return a * 1.08;」の行をマウス でクリック ② 「デバッグ」→ 「ブレークポイントの 設定/解除」 ③ ブレークポイント が設定されるので確認. 赤丸がブレークポイン トの印 24

25.

• Visual Studio で,デバッガーを起動しなさい. 「デバッグ」 → 「デバッグの開始」 • 「return a * 1.08;」の行で,実行が中断することを 確認しなさい • あとで使うので,中断したままにしておくこと 「return a * 1.08;」の 行で実行が 中断している 25

26.

• 「return a * 1.08;」の行で,実行が中断した状態で, 変数の値を表示させなさい.手順は次の通り. ② 変数名と値の対応表が 表示される ①「デバッグ」 → 「ウインドウ」 → 「ローカル」 変数 a の値 120 26

27.

• ステップオーバーの操作を1回ずつ行いなさい. 「デバッグ」 → 「ステップオーバー」 (あるいは F10 キー) みどころ, 黄色の矢印が動く. あるときは foo 関数の中. あるときは main 関数の中 27

28.

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

29.

サブルーチン呼び出しのための call 命令 Visual Studio の C++ プログラム アセンブリ言語の call 命令 「call foo ・・・」 でサブルーチンの先頭へジャンプ 29

30.

• 次のように書き替えて,同じ手順を繰り返しなさ い. • 30

31.

13-3 サブルーチン呼び出しに 関する演習 31

32.

演習 • Visual Studio を起動しなさい • Visual Studio で,Win32 コンソールアプリケー ション用プロジェクトを新規作成しなさい プロジェクトの「名前」は何でもよい 32

33.

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

34.

• ビルドしなさい.ビルドのあと「1 0 失敗」の表示を確認しなさい 正常終了, → 表示されなければ,プログラムのミスを自分で 確認し,修正して,ビルドをやり直す 34

35.

• Visual Studio で「return a * 1.08;」の行に,ブ レークポイントを設定しなさい ① 「 return a * 1.08;」の行をマウス でクリック ② 「デバッグ」→ 「ブレークポイントの 設定/解除」 ③ ブレークポイント が設定されるので確認. 赤丸がブレークポイン トの印 35

36.

• Visual Studio で,デバッガーを起動しなさい. 「デバッグ」 → 「デバッグの開始」 • 「return a * 1.08;」の行で,実行が中断することを 確認しなさい • あとで使うので,中断したままにしておくこと 「return a * 1.08;」の 行で実行が 中断している 36

37.

• 「return a * 1.08;」の行で,実行が中断した状態で, 変数の値を表示させなさい.手順は次の通り. ② 変数名と値の対応表が 表示される ①「デバッグ」 → 「ウインドウ」 → 「ローカル」 変数 a の値 12 37

38.

関数 foo の中では,変数 a だけが使える (変数 x, p は使えない) 関数 bar の中では,変数 x だけが使える (変数 a, p は使えない) 38

39.

• ステップオーバーの操作を1回ずつ行いなさい. 「デバッグ」 → 「ステップオーバー」 (あるいは F10 キー) みどころ, 黄色の矢印が動く. あるときは foo 関数の中. あるときは bar 関数の中. あるときは main 関数の中. 39

40.

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

41.

関数呼び出しのための call 命令 Visual Studio の C++ プログラム アセンブリ言語の call 命令 「call foo ・・・」 でサブルーチンの先頭へジャンプ 41