情報学類 機械語序論の講義ページ(2008年度後半分)

このページは情報学類2年生科目「機械語序論」の講義ページです.(前半は佐藤三久先生の担当で別ページになります)

アップデート情報

講義のスケジュール

12/2〜1/13第1回〜第5回佐藤先生講義http://www.hpcs.cs.tsukuba.ac.jp/~msato/lecture-note/kikaigo2008/
1/20第6回&中間試験「関数呼び出しとスタックフレーム講義資料6&ref(): File not found: "lecture6.pdf" at page "講義:機械語序論";
1/27第7回「C言語と機械語のリンク」講義資料7&ref(): File not found: "lecture7.pdf" at page "講義:機械語序論"; &演習課題5&ref(): File not found: "kadai5.pdf" at page "講義:機械語序論";
2/3第8回「各種データの扱い」講義資料8&ref(): File not found: "lecture8.pdf" at page "講義:機械語序論"; &演習課題6&ref(): File not found: "kadai6.pdf" at page "講義:機械語序論";
2/10第9回「機械語と命令セットアーキテクチャ」講義資料9&演習課題7
2/17??(期末試験を繰り上げて実施)

講義・演習のtips

x86環境のマシンについて

coinsではx86アーキテクチャのマシンは数台しかありません。演習はそのマシンにsshコマンドでリモートログインして行ってください。マシン名は "orchid-calc?" で、最後の "?" には数字の1〜6が入ります。自分の学籍番号の下2桁を6で割って、その余りに1を加えた数を使ってください。例えば、あなたの学籍番号の下2桁が "13" だった場合は orchid-calc2 を使ってください。

orchid-calc? での文字コード

orchid-calc? では文字コードがMacintoshとは異なっており、sshでリモートログインした後のエラーメッセージ等が文字化けします。これを防ぐために、orchid-calc? にリモートログインした後で以下のコマンドを実行して下さい。

% setenv LANG C

これは、文字コードを無効(常に英語)にするという意味を持ちます。

ファイルの終端コードについて

アセンブラのソースプログラムを書いて cc コマンドで機械語にコンパイルしようとすると、以下のメッッセージが出ることがあります。

Warning: end of file not at end of a line; newline inserted

これは、「ファイルの最後に改行がないままファイルが終わってしまったので、改行を入れておいたよ」という警告です。ファイルの最後は必ず改行を1つ打っておかなければいけません。ただ、このメッセージはそういう警告を出した後、コンパイラは改行を自動的に入れてくれているので、コンパイル自体はちゃんと終わります。

16進電卓

課題を解く上で、多倍長計算の答え合わせが難しい、という声を聞きました。簡単に検算を行う方法として「16進電卓」を教えます。

UNIXのbcというコマンドがあります。これは簡易電卓のプログラムですが、この中で「入力/出力の基数を設定する」という機能があります。以下のようにして実行すると、入力を16進数で与え、結果も16進数で表示する」という電卓を作ることができます。

% bc

(何かメッセージが出てくるが、気にしない)

obase=16

ibase=16

このように ibase と obase を設定した後で、例えば

1F+35

とか入力すると、結果が 54 のように表示されます。コマンドを終了するには control-D をタイプします。

マメ知識:bcコマンドにおけるibase=は「入力の基数(base number)を変更する」という意味です。これ以降の入力は指定された値を基数とする「進数」で表されます。obaseは同様に出力の基数を変更します。obaseを指定する前にibaseを指定するとおかしなことになるので注意してください。(なぜそうなるのかは自分で考えてみてください)。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS