2.49k likes | 2.57k Views
本資料は、下記の資料と共に使用されることを想定してます。本資料だけをお持ちの方は、下記資料を整えた上で読み進めて下さい。 テキストについては市販されています。教員用CDについては無料で提供してますので、詳しくは 『 コンパイラ入門 』 の付録M 参考情報をご覧下さい。. ソフトウエア実践講座 コンパイラ入門 ソフトバンク クリエイティブ株式会社 ISBN4-7973-3169-0 ソフトウエア実践講座 コンパイラ入門 教員用CD 教員用資料 講義用スライド(本資料) サンプルソースプログラム
E N D
本資料は、下記の資料と共に使用されることを想定してます。本資料だけをお持ちの方は、下記資料を整えた上で読み進めて下さい。本資料は、下記の資料と共に使用されることを想定してます。本資料だけをお持ちの方は、下記資料を整えた上で読み進めて下さい。 • テキストについては市販されています。教員用CDについては無料で提供してますので、詳しくは『コンパイラ入門』の付録M 参考情報をご覧下さい。 • ソフトウエア実践講座 コンパイラ入門 ソフトバンク クリエイティブ株式会社 • ISBN4-7973-3169-0 • ソフトウエア実践講座 コンパイラ入門 教員用CD • 教員用資料 • 講義用スライド(本資料) • サンプルソースプログラム • 初期テンプレート (Primitive@InitialTemplate.cs) • スキャナ構築後 (Primitive@Scanner.cs) • パーサ構築後 (Primitive@Parser.cs) • シンボルテーブル構築後 (Primitive@SymbolTable.cs) • コード生成後 (Primitive@CodeGenerator.cs)
ソフトウエア実践講座 コンパイラ入門 ~ 究極のソフトウエア開発 ~
目次 • 準備作業 • 1章 はじめに • 2章 コンパイラ • 3章 問題の把握 • 4章 開発環境の設定 • スキャナの構築 • 5章 語彙定義 • 6章 スキャナの構築 • パーサの構築 • 7章 文法定義 • 8章 パーサの構築 • 9章 パーサの構築(変数と関数) • 10章 パーサの構築(式と代入文) • 11章 パーサの構築(選択文と繰り返し文) • 12章 シンボルテーブル • コードジェネレータの構築 • 13章 コードジェネレータ • 14章 コードジェネレータ(変数と関数) • 15章 コードジェネレータ(式と代入文) • 16章 コードジェネレータ(選択文) • 17章 コードジェネレータ(繰り返し文) • 参考資料 • パーサの構築 • テストプログラム • 言語仕様 • 付録CD-ROM
1章 はじめに シラバス 自作コンパイラのイメージ
1章 はじめにシラバス案(1/6) • コース名 • 対象者: ~大学 ~学部 ~学科 • 開講時期: ~ • コース番号: ~ • 授業科目: ~ • 単位数: ~ • 開講日: ~ • 開講時間: ~ • 開講場所: ~ • 担当教員 • 氏名: ~ • 研究室: ~研究室 • 電話番号: ~ • FAX番号: ~ • メールアドレス: ~ • オフィスアワー: ~ • 担当助手/ティーチング・アシスタント • 氏名: ~研究室 • オフィスアワー: ~
1章 はじめにシラバス案(2/6) • 目的 • コンパイラに必要な理論と実践を習得 • ゴール • 自作コンパイラの完成 • 必要な理論・知識を身につける • 前提条件 • 最低1つのプログラム言語でプログラムを作成できること • 課題・レポート・プロジェクト • 自作コンパイラを作成するプロジェクトを完成する • 1回目:スキャナー構築後のソース、入力プログラム、出力結果 • 2回目:パーサ構築後のソース、入力プログラム、出力結果 • 3回目:コードジェネレータ構築後のソース、入力プログラム、出力結果 • 期末考査
1章 はじめにシラバス案(3/6) • 評価 • 自作コンパイラ作成プロジェクト 60% • 期末考査 40% • 成績 • 優 90%以上 • 良 75%以上、90%未満 • 可 60%以上、75%以下 • 不可 60%未満 • 合計が60%に満たない場合、上限を60%として再試験を評価 • 上手な履修方法のアドバイス • スケジュールされた章を予め読んでおく事 • 毎週スケジュールに沿ってプロジェクトを推進・検証する事 • プロジェクト推進に必要な内容を整理しておく事
1章 はじめにシラバス案(4/6) • 授業スケジュール • 1週目 ~月~日(~) 1章:はじめに 2章:コンパイラ • 2週目 ~月~日(~) 3章:問題の把握 • 4章:開発環境の設定 3週目 ~月~日(~) 5章:語彙定義 • 4週目 ~月~日(~) 6章:スキャナーの構築 • 5週目 ~月~日(~) 7章:文法定義 • 6週目 ~月~日(~) 8章:パーサの構築 • 7週目 ~月~日(~) 9章:パーサの構築(変数と関数) • 8週目 ~月~日(~) 10章:パーサの構築(式と代入文) • 9週目 ~月~日(~) 11章:パーサの構築(選択文と繰り返し文) • 10週目 ~月~日(~) 12章:シンボルテーブル • 11週目 ~月~日(~) 13章:コードジェネレータ • 12週目 ~月~日(~) 14章:コードジェネレータ(変数と関数) • 13週目 ~月~日(~) 15章:コードジェネレータ(式と代入文) • 14週目 ~月~日(~) 16章:コードジェネレータ(選択文) 17章:コードジェネレータ(繰り返し文) 15週目 ~月~日(~) 18章:ポストモーテム(事後検証) • 16週目 ~月~日(~) 期末考査
1章 はじめにシラバス案(5/6) • 教科書/テキスト • ソフトウエア実践講座 ~コンパイラ入門~ • ソフトバンク クリエイティブ株式会社 • ISBN4-7973-3169-0 添付CD内容 • 統合開発環境プロジェクト一式 • Visual Studio .NET 2003 • Visual Studio 2005 • Visual C#/C++ 2005 Express Edition • Express Edition用擬似アセンブラ • 入出力ライブラリ • iolib.lib / iolib.dll / iolib.inc • コンパイラ開発用テンプレート • C#テンプレートソース(Primitive.cs) • 入力ファイル(in.txt) • 出力ファイル(out.asm) • テストプログラム • 検証用テストプログラムサンプル一式 • HelloWorld.txt • Change.txt • Fibonacci.txt • Prime.txt • 統合化環境用サンプルプログラム • PrimitiveIDE 本スライドにはテキストの一部を抜粋して使用しています
1章 はじめにシラバス案(6/6)~テキスト目次1章 はじめにシラバス案(6/6)~テキスト目次 • 付録 • A 言語仕様 • B トークンと言語仕様 • C トークン一覧表 • D スキャナ後の言語仕様 • E 文法変換規則 • F 文法変換後の言語仕様 • G 文法とパーサの変換対応表 • H テンプレート • I アセンブラ関連 • J 素数プログラム、アセンブラ、実行結果 • K フィボナッチプログラム、アセンブラ、実行結果 • L 添付CD-ROMについて • M 参考情報 • 準備作業 • 1章 はじめに • 2章 コンパイラ • 3章 問題の把握 • 4章 開発環境の設定 • スキャナの構築 • 5章 語彙定義 • 6章 スキャナの構築 • パーサの構築 • 7章 文法定義 • 8章 パーサの構築 • 9章 パーサの構築(変数と関数) • 10章 パーサの構築(式と代入文) • 11章 パーサの構築(選択文と繰り返し文) • 12章 シンボルテーブル • コードジェネレータの構築 • 13章 コードジェネレータ • 14章 コードジェネレータ(変数と関数) • 15章 コードジェネレータ(式と代入文) • 16章 コードジェネレータ(選択文) • 17章 コードジェネレータ(繰り返し文) • ポストモーテム(事後検証) • 18章 ポストモーテム(事後検証)
1章 はじめに1.3 本書で構築するコンパイラについて Input N>1000 (入力) 2:→剰余が無いので素数 3:→2で割り切れないので素数 4:→2で割り切れる 5:→2→3→4で割り切れないので素数 6:→2で割り切れる 7:→2→3→4→5→6で割り切れないので素数 8:→2で割り切れる 9:→2→3で割り切れる 10:→2で割り切れる ・・・ 入力された数値までこれを繰り返す 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59, 61,67,71,73,79,83,89,97,101,103,107,109,・・・ MODULE Prime; VAR i,j,n,q,r,flg : INTEGER; BEGIN WriteStr("N>"); ReadInt(n); i:=2; WHILE i<=n DO flg:=0; j:=2; WHILE j<i DO q:=i/j; r:=i-j*q; IF r=0 THEN flg:=1 END; j:=j+1 END IF flg=0 THEN WriteInt(i); WriteStr(","); END; i:=i+1 END; END Prime.
2章 コンパイラ コンパイラについて コンパイラを構成する要素 これから学ぶべき内容
2章 コンパイラ2.1 コンパイラの概要 • コンパイラ • 特定のプログラム言語をアセンブラに変換するプログラム • 一般的には、ある規則を別の規則に変換するプログラム 規則=特定の規則に沿った記述やフォーマット • コンパイラとインタープリタ • コンパイラは変換と実行が別のタイミングで行われる 例:C言語のコンパイル、アプリケーションの実行 • インタープリタは変換と実行が同じタイミングで行われる 例:BASICインタープリタ
2章 コンパイラ2.1 コンパイラの概要 • コンパイラは変換プログラム • 入力プログラム(通常~言語と名前がある) • 出力プログラム(通常、アセンブラ言語) プログラム言語 main() { puts(Hello, World!); } コンパイラ アセンブラ言語 .data Letter dd 0 .code mov Letter, ‘H’ .... 入力 出力
2章 コンパイラ2.1 コンパイラの概要 • 手続き型言語 • C, Pascal, COBOL, FORTRANなど • オブジェクト指向型言語 • C#、C++、Smalltalkなど • 関数型言語 • Lisp, Scheme, MLなど • 論理型言語 • Prologなど
2章 コンパイラ2.2 コンパイラの全体構成 アセンブラ言語 .data Letter dd 0 .code mov Letter, ‘H’ .... プログラム言語 main() { puts(“Hello!); } コンパイラ スキャナー パーサ コード ジェネレータ 入力:プログラム 出力:トークン 機能:トークンに分解 「トークン」とはプログラムの最小構成要素 入力:トークン 出力:構文解析木 機能:構成を分析 構成=「文法」~あるべきトークンがあるべき場所に収まっているか 入力:構文解析 出力:アセンブラ 機能:意味(コードを生成) 「意味」とは解析結果
2章 コンパイラ2.2 コンパイラの全体構成 プログラム MODULE HelloWorld; BEGIN WriteStr(“Hello World!“) END HelloWorld . トークン MODULE HelloWorld ; BEGIN WriteStr ( "Hello World!“ ) END HelloWorld .
2章 コンパイラ2.2 コンパイラの全体構成 構文解析木(該当する部分のみ抽出) <program>= MODULE IDENT ; <program1> BEGIN <statlist> END IDENT . <program1>= ε | <decllist> <statlist>= <statement> <statlist1> <statlist1> = ε | ; <statement> <statlist1> <statement>= IDENT→WriteStr <statement1> <statement1>= ( <literal> ) <literal>= STR→“Hello World!” | NUMBER | IDENT トークン MODULE HelloWorld; BEGIN WriteStr ( "Hello World!“ ) END HelloWorld .
2章 コンパイラ2.2 コンパイラの全体構成 構文解析木(該当する部分のみ抽出) <program>= MODULE IDENT ; <program1> BEGIN <statlist> END IDENT . <program1>= ε | <decllist> <statlist>= <statement> <statlist1> <statlist1> = ε | ; <statement> <statlist1> <statement>= IDENT→WriteStr <statement1> <statement1>= ( <literal> ) <literal>= STR→”HelloWorld!” | NUMBER | IDENT アセンブラ .586 .model flat,stdcall INCLUDE iolib.inc .data Letter dd 0 .code _start: mov Letter, 'H' invoke OutputLetter, Letter ・・・ invoke ExitProcess,0 end _start END
2章 コンパイラ2.2 コンパイラの全体構成 • 準備作業 • 1~4章:基礎知識と開発環境 • フェーズ1 • 5~6章:スキャナの構築 • フェーズ2 • 7~12章:パーサの構築 • フェーズ3 • 13~17章:コードジェネレータの構築 • ポストモーテム • 18章:まとめと更に深い学習のために
3章 問題の把握ステップ1 BNFと文法 BNFとEBNF 言語仕様 プログラムと言語仕様との関係
3章 問題の把握3.2 BNF(Backus Naur Form) • BNF • 「文法」を記述する表記法 • コンピュータ言語を表す為に使われることが多い • 英文法 • 単語と単語の構成・関係を表す • 5文型は単語の品詞から英文の型を表現している • プログラム言語の文法 • プログラムの最小構成要素の構成・関係を表す • 変数、キーワード、オペレータなどの関係 • 代入文の①abc=123、②123=abc、どちらが正しい?
3章 問題の把握3.2 BNFの定義 • BNF • ターミナル(終端記号) • ノンターミナル(非終端記号)で< >と表記する • 左辺と右辺はターミナルとノンターミナルの集合体 • 左辺 ::= 右辺 • 本書では左辺はノンターミナルだけに制限する • 例題 • <文> ::= <主語> <動詞> <目的語> • <主語> ::= I • <動詞> ::= Love • <目的語> ::= You • 「::=」は置き換えるという意味、以後「→」を使用
3章 問題の把握3.2 BNFの定義 • BNFが出来ること • 文字列が文法に合致しているかどうかを「識別」できる • 置き換えのステップを「導出」と呼ぶ • 例題 • ステップ1~先頭から開始される~ <文> • ステップ2~<文>は<主語><動詞><目的語>によって置き換えられる~ <主語><動詞><目的語> • ステップ3~<主語>は I によって置き換えられる~ I <動詞><目的語> • ステップ4~<動詞>は Love によって置き換えられる~ I Love<目的語> • ステップ5~<目的語>は You によって置き換えられる~ I Love You • ステップ6~<文>は I Love You に変換換された~
3章 問題の把握3.2 BNFの定義 <文> ↓ <主語t> <動詞> YOU ↓ ↓ I LOVE 下記の様 に表す 縦書きでも 同義
3章 問題の把握3.2 BNF例~数値の識別 • 数値 • 1文字以上の数字 • BNF • <number> → <digit> <number1> • <number1> → ε | <digit> <number1> • <digit> → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 • 注:|(OR)は選択を示す(次スライド参照) • 識別できる数値の例 • 1、1、2、3、5、8、13、21・・・ • 識別できない数値の例 • -123(マイナスは定義されていない)、abc(数字ではない)
3章 問題の把握3.2 BNF例~数値の識別 • BNF • <number> → <digit> <number1> • <number1> → ε| <digit> <number1> • <digit> → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 • BNF(上記の記述と同義) • <number> → <digit> <number1> • <digit> → 0 • <digit> → 1 • <digit> → 2 • <digit> → 3 • <digit> → 4 • <digit> → 5 • <digit> → 6 • <digit> → 7 • <digit> → 8 • <digit> → 9 • <number1> → ε • <number1> → <digit> <number1>
3章 問題の把握3.2 BNF例~数値の識別 • 構文解析木 • 識別に到るBNF(右辺と左辺)を表したもの • 前ページの例題でアニメーションが付いた部分を並べたもの • 1を識別した場合の構文解析木 • <number> → <digit> → 1 <number1> → ε • 13の識別した場合の構文解析木 • <number> → <digit> → 1 <number1> → <digit> → 3 <number1> → ε • ε(エプシロン)の意味 • 該当するBNFやシンボルが「選択・識別」されなかった意味 • 選択・識別する物が無いと明確に示す
3章 問題の把握3.2 BNF例~数値の識別 • 構文解析木の表記について • トポロジーが一致していればどんな形式でもかまわない • 下記の解析木は同じ意味 • 横書きの場合(13を識別した場合) • <number> → <digit> → 1 <number1> → <digit> → 3 <number1> → ε • 縦書きの場合(13を識別した場合) <number> ↓ <digit> <number1> ↓ ↓ 1 <digit><number1> ↓ ↓ 3 ε
3章 問題の把握3.2 BNF例~文字列の識別 • 文字列 • 1文字以上の文字でプログラムでは識別子と呼ばれる • BNF • <ident> → <letter> <ident1> • <ident1> → ε | <letter> <ident1> • <letter> → a | b | c | d | e | f | g | h | i | j | k | l | m | • n | o | p | q | r | s | t | u | v | w | x | y | z | • A | B | C | D | E | F | G | H | I | J | K | L | M | • N | O | P | Q | R | S | T | U | V | W | X | Y | Z • 識別できる数値の例 • a、ab, abc, xyz, Hello ・・ • 識別できない数値の例 • 123、abc123(数字は定義されていない)
3章 問題の把握3.2 BNF例~文字列の識別 • Abを識別した場合の構文解析木 • ステップ1: <ident> • ステップ2: <ident>→<letter> <ident1> • ステップ3: <ident>→<letter>→A <ident1> • ステップ4: <ident>→<letter>→A <ident1>→<letter> <ident1> • ステップ5: <ident>→<letter>→A <ident1>→<letter>→b <ident1> • ステップ6: <ident>→<letter>→A <ident1>→<letter>→b <ident1>→ε
3章 問題の把握3.3 BNFとEBNF • EBNF • Extended BNF(拡張されたBNF) • BNFよりコンパクトに記述できる • ( )によるグルーピング • まとめて処理できる • *による0回以上の繰り返し • 再帰呼び出しを省略できる • +による1回以上の繰り返し • 再帰呼び出しを省略できる • [ ]により二者択一の選択 • εを使わずに処理できる
3章 問題の把握3.3 EBNF~( )と* • BNF(識別子) • <ident> → <letter> <ident1> • <ident1> → ε → <lettter> <ident1> → <digit> <ident1> • <letter> → 前例と同じ(英小文字、英大文字) • <digit> → 前例と同じ(0~字、数値) • 同等のEBNF • <ident> → <letter> ( <letter> | <digit> )* • ( )の効果 • ( <letter> | <digit> )によって2つのノンターミナルがまとめて処理 • *の効果 • ( <letter> | <digit> )*により<ident1>の再帰呼び出しが不要
3章 問題の把握3.3 EBNF~[ ] • BNF • <program> → MODULE <ident> ; <additional> BEGIN ・・・END <ident> . • <additional>→ ε → <decllist> (変数定義が行われるノンターミナル) • 同等のEBNF • <program> --> MODULE <ident> ; [ <decllist> ] BEGIN ・・・END <ident> . • 例題1~変数が無い場合は[ ]内が選択されなかった • MODULE PROGRAM; • ~ここに変数定義が無い~ • BEGIN ・・・ • 例題2~変数がある場合は[ ]内が選択された • MODULE PROGRAM; VAR I, J, K : INTEGER; • BEGIN ・・・
3章 問題の把握3.3 EBNF~+ • BNF • <decllist> →VAR <decilist1> • <decllist1> →<identlist> : <type> ; <decllist2> • <decllist2> → ε →<decilist1> • 同等のEBNF • <decllist> -->VAR ( <identlist> : <type> ; )+ • 例題1~<decllist>が+により1回選択された場合(前ページの例題2). • 例題2~変数定義のラインは1回以上何回定義されてもよい(この例では3回) • MODULE PROGRAM; VAR I, J, K : INTEGER; VAR a, b : INTEGER; VAR z, z, x, y, z : INTEGER; ・・・ • BEGIN ・・・
3章 問題の把握3.4 言語仕様=プログラムの設計図 <program> →MODULE <ident> ; [ <decllist> ] BEGIN <statlist> END <ident> . <ident> →<letter> ( <letter> | <digit> )* <decllist> →VAR ( <identlist> : <type> ; )+ <statlist> →<statement> ( ; <statement> )* <identlist> →<ident> ( , <ident> )* <type> →INTEGER | STRING <statement> →<ident> := <expression> | IF <relation> THEN <statlist> [ ELSE <statlist> ] END | WHILE <relation> DO <statlist> END | <ident> "(" <literal> ")“ <relation> →<expression> <rel op> <expression> <expression>→ <unary op> ] <term> ( <add op> [ <unary op> ] <term> )* <term> →<factor> ( <mul op> <factor> )* <factor> →<literal> | "(" <expression> ")“ <literal> →<ident> | <integer> | <string> <integer> →<digit>+ <rel op> →= | < | <= | <> | > | >= <unary op> →+ | - <add op> →+ | - <mul op> → * | / <digit> →0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 <string> →" <any character except EOF, EOL and "> “ <letter> →a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
3章 問題の把握3.4 言語仕様の説明 • <program>は変数定義と文から構成される • <program> →MODULE <ident> ; [ <decllist> ] BEGIN <statlist> END <ident> . • <decllist> →VAR ( <identlist> : <type> ; )+ • <identlist> →<ident> ( , <ident> )* • <type> →INTEGER | STRING • <statlist> →<statement> ( ; <statement> )* • <statement>→<ident> := <expression> | IF <relation> THEN <statlist> [ ELSE <statlist> ] END | WHILE <relation> DO <statlist> END | <ident> "(" <literal> ")“ 変数定義 例 VAR I,J,K: INTEGER; 文 例 WriteStr(“HelloWorld!”)
3章 問題の把握3.4 言語仕様の説明 • <ident>による識別子~先頭が英字で2文字目以降は英数字 • <ident> → <letter> ( <letter> | <digit> )* • <digit> → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 • <letter> → a | b | c | d | e | f | g | h | i | j | k | l | m | n o | p | q | r | s | t | u | v | w | x | y | z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z • <string>は” と“で囲まれた文字、但し、EOF, EOL, ”は除く • <string> →" <any character except EOF, EOL and "> “ • EOL(End Of Line)~2行にまたがれない • EOF(End Of File)~ファイルの終わりまで継続できない • 例:”Hello World!”, ”Input N>”, etc • <integer>による数値~1桁以上の数値 • <integer> →<digit>+ • <digit> →0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
3章 問題の把握3.4 言語仕様の説明(2/3) • <unary op>は符号 • <unary op>→+ | - • <add op>は加減演算 • <add op> →+ | - • <mul op>は乗除演算 • <mul op> → * | / • 比較演算子 • <rel op> →= (EQ) → < (LT) → <= (LE) → <> (NE) → > (GT) → >= (GE)
3章 問題の把握3.4 言語仕様の説明(3/3) • <literal>は<ident>か<integer>か<string> • <literal> →<ident> | <integer> | <string> • <expression>は符号と加減乗除付の<literal>の式(再帰的に定義) • 例1:1+2*3 (加算、乗算) • 例2:-1+-2*-3 (符号付) • 例3:(1+2)*3 (括弧付の式~加算優先) • 例4:(((1))) • <expression>→[ <unary op> ] <term> ( <add op> [ <unary op> ] <term> )* • <term> →<factor> ( <mul op> <factor> )* • <factor> →<literal> | "(" <expression> ")“ • <relation>は比較式~式と式を比較演算子で結合 • 例:123<234 • <relation> →<expression> <rel op> <expression>
3章 問題の把握3.5 言語仕様とプログラム 相当する言語仕様 (該当する部分のみ) <program> → MODULE <ident> ; [ <decllist> ] BEGIN <statlist> END <ident> . <statlist> → <statement> ( ; <statement> )* <statement> →<ident> "(" <literal> ")“ プログラム MODULE HelloWorld; BEGIN WriteStr ( "Hello World!“ ) END HelloWorld . プログラムと言語仕様の対応 MODULE <ident> ; BEGIN <statlist>→<statement>→<ident> ( <literal> ) END <ident> .
4章 開発環境の設定ステップ2 環境設定と動作検証 プロジェクト環境のセットアップ C#/アセンブラの開発/実行環境検証
4章 開発環境の設定4.1 事前準備(開発環境) • 開発環境 • 自作コンパイラを作るために必要な開発/実行環境 • コンパイラ、マクロアセンブラ、リンカが必要 • コンパイラ • ① Visual Studio 2005 • ②Visual Studio .NET 2003 • ③Visual C# 2005 Express Edition (無料ダウンロードはテキスト参照) • アセンブラ • マクロアセンブラ(ml) ~ ①、②の場合 • 擬似アセンブラ(mlx) ~ ③の場合 (添付CDに格納) • リンカ • リンカ(link) ~ ①、②の場合 • Visual C++ 2005 Express Edition ~ ③の場合 (無料ダウンロードについての詳細はテキスト参照)
4章 開発環境の設定4.1 事前準備(開発方法) • 統合開発環境による開発 • プログラム開発作業の効率化 • プロジェクト(CDで提供)を利用可能 • 新しい言語と環境に慣れる為に、こちらがお勧め • コマンドラインによる開発 • エディタによるプログラム入力 • コンパイル、アセンブル、リンク、実行はコマンド入力 • 前提知識や間接作業が多いので、熟練者向き
4章 開発環境の設定4.1 事前準備(開発方法) 統合開発環境 豊富な機能とメニューを選択 コマンドライン 全てコマンドを入力
4章 開発環境の設定4.1 事前準備 • ① 開発環境がインストールされている事を確認 • Visual Studio 2005 • Visual Studio .NET 2003 • Visual C#/C++ 2005 Express Edition (2つ必要) • ② 開発環境を持っていない場合 • Visual C#/C++ 2005 Express Editionをダウンロード • ③ テキスト4.1 事前準備を熟読 • 「陥りやすいトラブル」は必ず目を通すこと!
4章 開発環境の設定4.1 事前準備 • Visual Studio 2005の統合開発環境を使う場合 • テキスト4.2を参照しながら各自で実行 • Visual Studio .NET 2003の統合開発環境を使う場合 • テキスト4.3を参照しながら各自で実行 • Visual C#/C++ 2005 Express Editionの統合開発環境を使う場合 • テキスト4.4を参照しながら各自で実行 • 上記の開発環境でコマンドラインを用いて開発する場合 • テキスト4.5を参照しながら各自で実行
4章 開発環境の設定参考 セットアップ Visual Studio 2005 (統合開発環境版)をダブルクリック Setup.exeをダブルクリックし、インストーラを起動
4章 開発環境の設定参考 C#の開発/実行環境検証 • 動作検証 • 入力ファイルをコンパイル・実行、出力結果を確認 • 開発環境、方法を自ら検証し、動作確認できる 入力 検証用プログラム In.txt 出力 実行結果 out.asm 開発 環境・方法 入力 出力 C#