ex04_2012.ppt

Similar documents
ex05_2012.pptx

スライド 1

スライド 1

スライド 1

ソフトウェア基礎技術研修

ex03_2012.ppt

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

Microsoft PowerPoint - NxLec ppt

情報処理概論(第二日目)

ssh

情報処理概論(第二日目)

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

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

計算機アーキテクチャ

情報処理概論(第二日目)

TSUBAME2.5 利用の手引き TSUBAME2.5 利用ポータル編 2014/12/03 学術国際情報センター 共同利用推進室 Copyright (C) GSIC All Rights Reserved.

Microsoft PowerPoint - Chap2 [Compatibility Mode]

Microsoft PowerPoint - Chap4 [Compatibility Mode]

TSUBAME利用手引き

計算機アーキテクチャ

コンピュータ工学Ⅰ

Microsoft PowerPoint - Lec pptx

コンピュータ工学Ⅰ

CASL入門

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

1 はじめに このアプリケーションは 計算機ハードウェア論 のアセンブリ言語 ( 超簡単命令セット ) の理解を助けるために製作されました 便宜的に機能を追加 削除した箇所があるため このアプリケーション上での動き方が実際のCPUでの動き方と異なる場合があることに留意してください このアプリケーショ

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう

PowerPoint プレゼンテーション

スライド 1

Microsoft PowerPoint - kougi9.ppt

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

Microsoft PowerPoint ppt

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル

Microsoft PowerPoint ppt

3 SIMPLE ver 3.2: SIMPLE (SIxteen-bit MicroProcessor for Laboratory Experiment) 1 16 SIMPLE SIMPLE 2 SIMPLE 2.1 SIMPLE (main memo

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

Microsoft PowerPoint - prog04.ppt

Prog1_10th

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

スライド 1

プログラミングA

Microsoft PowerPoint ppt

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

ソフトウェア基礎技術研修

Microsoft PowerPoint - C_Programming(3).pptx

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

Microsoft PowerPoint - ProcML-12-3.ppt

sinfI2005_VBA.doc

プログラミングA

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Microsoft Word - DF-Salford解説09.doc

JEB Plugin 開発チュートリアル 第3回

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

情報処理演習 B8クラス

Microsoft PowerPoint - 11.pptx

この方法では, 複数のアドレスが同じインデックスに対応づけられる可能性があるため, キャッシュラインのコピーと書き戻しが交互に起きる性のミスが発生する可能性がある. これを回避するために考案されたのが, 連想メモリアクセスができる形キャッシュである. この方式は, キャッシュに余裕がある限り主記憶の

Microsoft PowerPoint ppt

Taro-Basicの基礎・条件分岐(公

Prog1_6th

2006年10月5日(木)実施

スライド 1

Microsoft PowerPoint - kougi7.ppt

1.1 ラベル ラベルはカラム 1 から始まらなければならない ラベルの後にはコロン スペース タブ 改行が続いてよい ラベルはアルファベットかアンダーバーで始まり 英数字 アンダーバー クエスチョンマークを含んでよい ラベルは 32 文字までである デフォルトではこれらは大文字と小文字を区別するが

kiso2-09.key

プログラミング基礎

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

Cコンパイラパッケージお知らせ

1. 作業フロー 公開鍵 / 秘密鍵の生成 スパコンゲートウェイノードへの ログイン時に使用する鍵の作成 公開鍵の設置 スパコンゲートウェイノードへの ログイン時に使用する公開鍵をスパコンに登録 SSH 接続確認 スパコンゲートウェイノード / インタラクティブノードへのログイン 初期パスワードの変

Java講座

Microsoft Word - ユーザ向け利用の手引き_v0.3.doc

program7app.ppt

Microsoft Word - VBA基礎(3).docx

PowerPoint プレゼンテーション

スライド 1

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

PowerPoint プレゼンテーション

hard3.pptx

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

Taro-再帰関数Ⅱ(公開版).jtd

Microsoft PowerPoint - kougi4.ppt

Microsoft PowerPoint - 第3回目.ppt [互換モード]

目次 1. はじめに 1 2. マルチALUプロセッサ MAP MAP の構成 MAP 命令セットアーキテクチャ 並列 連鎖判定のアルゴリズムについて 5 3. Booth 乗算のアルゴリズム 次 Booth アルゴリズム 次 Bo

6. パイプライン制御

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

PowerPoint プレゼンテーション

Microsoft Word - problem5.doc

PowerPoint Presentation

Taro-リストⅢ(公開版).jtd

メソッドのまとめ

TSUBAME利用手引き

Microsoft PowerPoint - CompArch_Exercise3.pptx

デジタル表現論・第4回

ソフトウェア基礎技術研修

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

Prog1_12th

プログラミング入門1

目次

Transcription:

2012 年度計算機システム演習第 4 回 2012.05.07

第 2 回課題の補足 } TSUBAMEへのログイン } TSUBAMEは学内からのログインはパスワードで可能 } } } } しかし 演習室ではパスワードでログインできない設定 } 公開鍵認証でログイン 公開鍵, 秘密鍵の生成 } ターミナルを開く } $ ssh-keygen } Enter file in which to save the key (/Users/shirahata/.ssh/id_rsa): Return } Enter passphrase (empty for no passphrase): 公開鍵のパスワードを入力 } Enter same passphrase again: もう一度同じパスワードを入力 } id_rsa が秘密鍵 id_rsa.pub が公開鍵になる TSUBAMEへの公開鍵の登録 } 東工大ポータル -> TSUBAME2.0 利用ポータル -> SSH 公開鍵アップロード } 公開鍵を選択しアップロード ( 生成した公開鍵 id_rsa.pub をアップロード ) 以上の操作により演習室からTSUBAMEへログインできるようになる

高水準言語 (C 言語 ) アセンブリ言語 (MIPS) 機械語 (MIPS) コンパイラ アセンブラ 計算結果 今日の内容

加減算 } add $A, $B, $C } $A <- $B + $C } addi $A, $B, 数値 } 即値可算 (add immediate) } レジスタが示す値に定数を加算 } $A <- $B + 数値 } sub $A, $B, $C } $A <- $B - $C } subi は無い } addi で数値に負の値を指定 add $t0, $t1, $t2 addi $t0, $t1, 4 sub $t0, $t1, $t2 addi $t0, $t1, -16

レジスタ } CPU 内部の記憶素子 } MIPS では 32 本 レジスタ領域 $a0 ~ $a3 サブルーチンの引数を入れる $v0 ~ $v1 サブルーチンの返り値が入る $t0 ~ $t9 一時変数 ( 自由に使える ) $ra ( メイン ) ルーチンから戻るアドレスを保持 $zero 定数値 0

よく使う命令 } 分岐命令 ( ジャンプ命令 ) } j, jr } 条件分岐命令 } beq, bne, blt, ble, bgt, bge } 比較命令 } slt, slti

分岐命令 (1/2) } j label } ラベルの命令へジャンプ J: NJ: m3.s.data.asciiz "Jump\n".asciiz "Not Jump\n" main:.text j jump j next : next: : jump: li $v0, 4 la $a0, NJ syscall jr $ra li $v0, 4 la $a0, J syscall jr $ra label の有無に関係なく jump 命令が呼び出されるまで 次の命令が実行され続ける Jump

分岐命令 (2/2) } jr $A } レジスタ $A の値の指すアドレスにジャンプ } 例 : jr $ra la $t0, next jr $t0 : next: J: NJ: main: jump:.data.asciiz "Jump\n".asciiz "Not Jump\n".text la $t0, jump jr $t0 li $v0, 4 la $a0, NJ syscall jr $ra li $v0, 4 la $a0, J syscall jr $ra m4.s Jump

条件分岐命令 } beq $A, $B, label } branch on equal } $A == $B ならラベルにジャンプ } bne $A, $B, label } branch on not equal } $A!= $B ならラベルにジャンプ beq $t0, $t1, Label : Label: :

if 文の実現 if (x!= 0) y = 1; else y = 2; bne $t0, $zero, then # if (x!=0) goto then li $t1, 2 # y=2 j end then: li $t1, 1 # y=1 end: ($t0 に x, $t1 に y が該当する )

while 文の実現 while (x!= y) { y++; } while (true) { if (x==y) break; y++; } while: beq $t0, $t1, end # if (x==y) goto end addi $t1, $t1, 1 # y++ j while end: ($t0にx, $t1にyが該当する )

比較命令 } slt $A, $B, $C } set less than } $B < $C なら $A = 1; そうでなければ $A = 0 } slti $A, $B, 数値! } set less than immediate } $B < 数値なら $A = 1; そうでなければ $A = 0

その他の条件分岐命令 blt $A, $B, label ble $A, $B, label bgt $A, $B, label bge $A, $B, label $A < $B なら分岐 $A <= $B なら分岐 $A > $B なら分岐 $A >= $B なら分岐 (less than, less than equal, greater than, greater than equal) } } これらは疑似命令 } slt, beq, bne の組み合わせで実現できる ( 課題 ) } move $A, $B も擬似命令 } add A, B, $zero その他の命令 } http://www.cs.wisc.edu/~larus/hp_appa.pdf の A.10 (A-51) 以降にその他の命令が載っている

配列 } ワードの配列 }.word でワード (4 byte) の数値を定義できる } MIPS では 1 ワード ( 語 ) = 4 バイト = 32 ビット 1 バイト = 8 ビット A:.data.word 1 2 3 } 要素 A[i] にはアドレス A+i*4 が対応 アドレス 0x00000000 メモリ 配列表現 } ワード単位でデータは格納されるが アドレッシングはバイト単位で表現 A+0 A+4 1 2 A[0] A[1] A+8 3 A[2] 0xffffffff

メモリアクセス命令 } lw $A, X($B) } $A = メモリ [X + $B] } $A, $B: レジスタ X: 定数 ( ラベルor 数字 ) } メモリ上のアドレス X+$B から始まる 1ワード (4バイト) のデータをレジスタ $Aに転送する } 例 :lw $t0, 8($s1) } $s1 が示すアドレスから 2 ワード先のデータ (1 ワード分 ) を $t0 に読込む } sw $A, X($B) } メモリ [X+$B] = $A } $A, $B: レジスタ X: 定数 ( ラベルor 数字 ) } レジスタ $Aの値 (1ワード) をメモリ上のアドレス X+$B に転送する } 例 :sw $t0, 8($s1) $s1 $s1 +8 } $s1 が示すアドレスから 2 ワード先のデータ (1 ワード分 ) に $t0 の値を書き込む 1 word 1 word 1 word

配列の操作 ( 例 ) } 配列 A の値を表示するプログラム どちらでもよい A: main:.data.word 1 2 3.text la $t0, A li $v0, 1 lw $a0, 0($t0) syscall la $t0, A li $v0, 1 lw $a0, 4($t0) syscall li $t0, 8 li $v0, 1 lw $a0, A($t0) syscall jr $ra m5.s 123

課題

課題 1:blt の実装 } slt を用いて blt を実装せよ } blt $s1, $s2, label を対象に 一時レジスタとして $t0 を使うこと } blt を実装したコード断片をレポートに記述し その解説をすること } 注意点 } 短いコードで記述されたもの程よい

課題 2: 2 つの配列の要素の和 } これら 2 つの配列の i 番目と 3-i 番目の要素どうしを足し合わせ 表示せよ }.word として 2 つの配列を定義 } A = { 1, 2, 3, 4 } } B = { 5, 6, 7, 8 } } 注意点 } A[0] + B[3], A[1] + B[2], A[2] + B[1], A[3] + B[0] } ループ処理で実装すること } syscall を使ってコンソールに表示すること 9999

課題 3: 最大値の探索 } 配列の中から最大値を出力するコードをかけ } 結果を syscall を使ってコンソールに出力すること } 以下のような配列を定義 } A = { 2, 7, 8, 1, 3, 9 }

補足 課題 2 課題 3 A: B: main:.data.word 1 2 3 4.word 5 6 7 8.text # 和を表示 A: main:.data.word 2 7 8 1 3 9.text # 最大値を出力

課題提出 } 〆切 : } 提出物 : 以下のファイルをアーカイブ, 圧縮したもの } ドキュメント (pdf,plain txt,word なんでも可 ) 以下の内容を含めること } 課題 1 の解答 } 課題 2,3 の実行結果 } もしあれば感想 質問等 } プログラムソース } 課題 2,3 ( 適宜コメントを記述すること )