Microsoft PowerPoint ppt

Similar documents
Microsoft PowerPoint ppt

PowerPoint プレゼンテーション

Microsoft PowerPoint ppt

PowerPoint プレゼンテーション

Microsoft Word - problem3.doc

Microsoft Word - CompA-Ex doc

Microsoft Word - problem5.doc

PowerPoint プレゼンテーション

プログラミング基礎

スライド 1

ex05_2012.pptx

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

Microsoft Word - CombB-Ex

Microsoft PowerPoint - prog03.ppt

スライド 1

第2回講義

Microsoft Word - Javacc.docx

JavaプログラミングⅠ

プログラミング入門1

kantan_C_1_iro3.indd

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

実行時のメモリ構造\(2\) Javaスタック内のフレーム間動作

Microsoft PowerPoint - Compiler01note.pptx

Microsoft PowerPoint ppt

Microsoft PowerPoint - chap10_OOP.ppt

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

プログラミング入門1

計算機アーキテクチャ

Microsoft PowerPoint - 07.ppt [互換モード]

Microsoft PowerPoint - prog04.ppt

デジタル表現論・第4回

Microsoft PowerPoint - 計算機言語 第7回.ppt

ex04_2012.ppt

Microsoft PowerPoint pptx

スライド 1

プログラミング入門1

スライド 1

プログラムの基本構成

C#の基本2 ~プログラムの制御構造~

PowerPoint プレゼンテーション

コンパイラ演習 第 7 回

プログラミングA

10-vm1.ppt

Prog2_9th

数値計算

言語プロセッサ2005

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

2

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Microsoft Word - keisankigairon.ch doc

新・明解Java入門

Microsoft Word - 3new.doc

PowerPoint プレゼンテーション

ガイダンス

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

コンピュータ工学Ⅰ

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

Java2セキュリティ

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

@ LL Future 2008/08/30 MORITA Hajime

Microsoft PowerPoint - 11.pptx

Prog1_3rd

JavaプログラミングⅠ

Program Design (プログラム設計)

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

GEC-Java

GEC-Java

Microsoft PowerPoint - ca ppt [互換モード]

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

例外,並行・同期処理,ゴミ集め

JavaプログラミングⅠ

PowerPoint プレゼンテーション

Java講座

マークアップ言語

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Prog1_10th

コンピュータの仕組み(1)ハードウェア

CプログラミングI

Microsoft PowerPoint ppt

Prog1_10th

プログラミング言語処理系論 (4) Design and Implementation of Programming Language Processors

文法と言語 ー文脈自由文法とLR構文解析2ー

Java言語 第1回

Microsoft PowerPoint - prog09.ppt

スライド 1

論理と計算(2)

スライド 1

PowerPoint プレゼンテーション

K227 Java 2

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

スライド 1

Microsoft PowerPoint - prog09.ppt

Java 2 - Lesson01

コンピュータ工学Ⅰ

Microsoft Word - 商業-3

Javaによるアルゴリズムとデータ構造

プログラミング入門1

Microsoft Word - no11.docx

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

Transcription:

仮想マシン ()

仮想マシン 復習 仮想マシンの概要 hsm 仮想マシン

プログラム言語の処理系 ( コンパイラ ) 原始プログラム (Source program) コンパイラ (Compiler) 目的プログラム (Object code) 原始言語 (Source language) 解析 合成 目的言語 (Object Language) コンパイルする / 翻訳する (to compile / to translate)

コンパイラのフェーズ 原始プログラム (Source program) 字句解析 (Scanning) 構文解析 (Parseing) 意味解析 (Semantic Analysis) コード生成 (Code Generation) 目的プログラム (Object code) 4

T Diagram プログラム言語 Cで記述した機能 f f C コンパイラ Pentium 用の C コンパイラ C M_pentium プログラム 言語 M_pentium で記述した機能 f (Pentium の機械語 ) f M_pentium M_pentium 計算機 Pentium 5

ある機能 f の実現 (Implementation) f を機械語 (Pentium) で記述する Pentium の上で実行 f M_pentium M_pentium 6

C 言語による言語処理過程 機能 f の実現 fをc 言語のプログラムとして記述する C Compilerでコンパイルする機械語 (Pentium) によるfに変換された! Pentiumの上で実行 f f C C M_pentium M_pentium M_pentium 7

Java 言語による言語処理過程 機能 f の実現 Javacでコンパイルする Javaバイトコードよるfに変換された!(F.class) Jvm(Java virtual machine) 上で実行 f f Java Java Java Byte Code Java byte code Java byte code Java byte code M_pentium M_PowerPC M_pentium M_PowerPC 8

コンパイラ インタプリタ方式と仮想マシン 原始プログラムをその言語に適した仮想的な計算機 ( 仮想機械, Virtual Machine) の機械語に変換する 現実の計算機の機械語に変換するより容易にコンパイラを作成可能 VM を用いる利点 欠点 移植性が高い ( マシン独立 ) 目的コードが小さい 実行速度が遅い JIT (Just In Time) コンパイラ技術など 9

Java 言語の例 Test.java public class Test{ } Java コンパイラ (javac Test.java) Test.class bb 7 b6 578 b6b 9 b57 Java 仮想機械 (java Test)

Java 言語の例 Test.java public class Test{ public static void main(string[] arg){ int i=; int j=4; System.out.println(i+j); } Test.class の内容 ( 一部 ) od h Test.class で表示 84 949 56 4 5 6 7 8 d a5 b7 b 9 6 9 Test.class を逆アセンブル javap c Test で表示 : iconst_ : istore_ : iconst_4 : istore_ 4: getstatic #; 7: iload_ 8: iload_ 9: iadd : invokevirtual #; : return

演習で作るコンパイラの例 test.hcc Int main() { int i j; i = ; j = 4; putint(i+j); } test.hsm PUSH LDC STV LDC 4 STV LDV LDV AD WRI POP HLT Test.class を逆アセンブル javap c Test で表示 : iconst_ : istore_ : iconst_4 : istore_ 4: getstatic #; 7: iload_ 8: iload_ 9: iadd : invokevirtual #; : return

Hsm (HiStackMachine) の概要 () 演習で用いる仮想機械 ( スタックマシン ) 構成プログラム P 命令列の置き場 プログラムカウンタ (pc) 次に実行する命令を指示 スタック (S) 演算対象 ( 被演算数 演算結果 ) を置く 記憶域 スタックポインタ (sp) スタックトップを指す フレームポインタ (fp) 関数 ( 手続き ) のフレームの開始アドレス ( 後の講義で説明 )

Hsm (HiStackMachine) の概要 () 命令セット () ロード ストア命令 ロード命令 : スタックトップに値を置く ストア命令 : 記憶域として確保した所に値を保存する 記憶域の確保 開放の命令 () 演算命令 算術演算 関係演算 ( 論理演算はない ) () ジャンプ命令 制御命令 無条件ジャンプ 条件ジャンプ 停止命令 (4) 入出力命令 入力 出力 4

hsm の構成図 命令 pc 命令 命令 命令 5 4 5 命令 4 命令 5 sp - 4 P pc = のとき 命令 を実行する pc = のとき 命令 を実行する pc = n のとき命令 n を実行する 値をロードする場合には sp sp+ として S[sp] に置く S 5

hsm の実行例 HLT.. プログラムの終了 LDC N N をスタックトップの上に積む sp++ ; S[sp] N ; pc++ 注 : sp は スタックトップ ( 一番最後に値をロードした場所 ) を指す解釈と 次に値をロードする場所 ( 一番最後に値をロードした場所の一段上 ) を指す解釈が可能 本講義 演習では前者の解釈を採用する 6

実行例 () LDC pc LDC HLT 5 4 5 sp - 4 P S 7

実行例 () LDC pc LDC HLT 5 4 5 sp 4 P S 8

実行例 () LDC pc LDC HLT 5 4 5 sp 4 P S 9

演算命令 SB 引き算命令 : sp-- ; S[sp] S[sp]-S[sp+]; pc++ NEG 符号反転命令 : S[sp] -S[sp]; pc++; LE 関係演算命令 <= sp-- ; if (S[sp] <= S[sp+) then S[sp] else S[sp] ; pc++ 算術演算 : AD, SB,ML,DV, NEG +, -, *, /, 反転関係演算 : EQ, NEQ, LT,LE,GT,GE ==,!=, <, <=, >, >=

実行例 (4) LDC pc LDC SB HLT 5 4 5 sp 4 P S

実行例 (5) LDC pc LDC SB HLT 5 4 5 sp 4 - P S

練習問題 () +5*- を計算する hsm マシン語のプログラムを書け そのプログラムの動作をシミュレートせよ

ロード命令 ストア命令 ( 暫定版 ) STV N ストア命令 S[N] S[sp]; sp--; pc++ LDV N ロード命令 sp++; S[sp] S[N]; pc++ LDC N 即値ロード命令 sp++; S[sp] N; pc++ Hsm の web ページの説明では STV p q s[base(p)+q]=s[t];t=t-;pc=pc+; となっている p= のときは base(p)= である P が 以外の場合については後の講義で説明する 4

メモリの確保と開放 PUSH N メモリを確保 sp sp+n; pc++ POP N メモリを開放 sp sp-n; pc++ 4 つ分の領域を確保 5 5 sp - 4 sp 4 PUSH 4 5

練習問題 () 次のプログラムの動作を説明せよ PUSH LDC 6 STV LDV LDV ML STV 7 POP HLT () () PUSH LDC STV LDC 5 STV LDV LDV ML LDV LDV ML AD STV POP HLT 6

練習問題 (). 次のプログラムと同等の動作をする hsm マシン語プログラムを書け ( 変数用の記憶域を確保し それを利用すること ) c = ; b = 5; a = c * (-) + b * c;. 上記プログラムおよび これまで出てきた例を hsm 仮想機械で実行せよ http://cis.k.hosei.ac.jp/~nakata/lecturecompiler /HiStackMachine-ALL/index.html http://cis.k.hosei.ac.jp/~nakata/lecturecompiler /JavaHiStackMachine-ALL/index.html 7

演習問題 (Problem ) () 練習問題 ()- を行え (p) 実行結果を確かめるために hsm(swing/java 版 ) を用いて a,b,c の最終的な結果が記憶域に保存された状態のスナップショットを取ること 変数の保存 参照についての説明は 以下にもある http://cis.k.hosei.ac.jp/~nakata/lecturecompiler /HiStackMachine-ALL/node8.html () 整数, 四則演算, 括弧からなる中置記法の式を hsm マシン語プログラムに翻訳するコンパイラを JavaCC 使って作成せよ 次のページにあるテストプログラムで確認すること http://cis.k.hosei.ac.jp/~asasaki /lecturecompiler/problem.htm なお プログラムの提出は下記にある提出指針に従うこと http://cis.k.hosei.ac.jp/~asasaki /lecturecompiler/guideline.htm ( 準備中 ) 8

コンパイラ作成の流れと プログラムの実行 +*5 cs7k4.class JavaCC/javac cs7k4.jj LDC LDC LDC 5 ML AD HLT コンパイラ作成の流れ hsm プログラムのコンパイル 実行の流れ 9

再提出レポート等についての注意 再提出レポートは 他のレポートとは別に提出してください 前回との差分がわかるように 最初に提出したものも一緒に提出してください