このページは情報科学類2年生科目「機械語序論」の講義ページです.(後半は多田野先生の担当で別ページになります)
講義・演習に関する質問は、kikaigo [AT] hpcs.cs.tsukuba.ac.jp 宛までお願いします([AT]を@マークに変えてください)。朴個人のアドレスには送らないでください。
12/7 | 第1回 | 「4ビットマイコン(プロセッサ)を理解しよう」「CPUと論理回路」講義資料1![]() ![]() |
12/14 | 第2回 | 「x86アセンブリ言語の基本的な書き方」講義資料2 ![]() |
12/21 | 第3回 | 「アドレッシングモードと条件分岐」講義資料3 ![]() ![]() |
1/11 | 第4回 | 「語長、符号拡張、多売長、シフト、論理演算」講義資料4 ![]() ![]() ![]() |
1/18 | (月曜講義振替日) | --- |
1/25 | 第5回 | |
2/1 | 第6回 | 中間試験(第2時限 - 10:10-11:25) |
COINSの計算機にログインし、そこからsshでx86 Linuxシステム(viola01〜viola06、以下 "viola0X" と総称します)にリモートログインして下さい。viola0X (X=1,2,3,4,5,6)の選び方は、「自分の学籍番号の下2桁を6で割り、その余り(0〜5)に1を加えた数をXとする」として下さい。例えば、学籍番号の下2桁が14の人はviola03、下2桁が75の人はviola04を使って下さい。
また、viola0Xにログインするとメッセージ類の文字コードがデフォルトで日本語になっており、Mac OSXの端末にうまく表示されない場合があります。ログインしたら、デフォルトの文字コードを英語にして下さい。このためには、viola0X上で以下のコマンドを実行すればいいです。
% LANG=C
(全ての文字の間に空白は入れない。標準のシェル以外を使っている人は、各自で環境変数LANGをCにセットすること。)
アセンブラのソースプログラムを書いて cc コマンドで機械語にコンパイルしようとすると、以下のメッッセージが出ることがあります。
Warning: end of file not at end of a line; newline inserted
これは、「ファイルの最後に改行がないままファイルが終わってしまったので、改行を入れておいたよ」という警告です。ファイルの最後は必ず改行を1つ打っておかなければいけません。ただ、このメッセージはそういう警告を出した後、コンパイラは改行を自動的に入れてくれているので、コンパイル自体はちゃんと終わります。
課題を解く上で、多倍長計算の答え合わせが難しい、という声を聞きました。簡単に検算を行う方法として「16進電卓」を教えます。
UNIXのbcというコマンドがあります。これは簡易電卓のプログラムですが、この中で「入力/出力の基数を設定する」という機能があります。以下のようにして実行すると、入力を16進数で与え、結果も16進数で表示する」という電卓を作ることができます。
% bc
(何かメッセージが出てくるが、気にしない)
obase=16
ibase=16
このように ibase と obase を設定した後で、例えば
1F+35
とか入力すると、結果が 54 のように表示されます。コマンドを終了するには control-D をタイプします。
マメ知識:bcコマンドにおけるibase=は「入力の基数(base number)を変更する」という意味です。これ以降の入力は指定された値を基数とする「進数」で表されます。obaseは同様に出力の基数を変更します。obaseを指定する前にibaseを指定するとおかしなことになるので注意してください。(なぜそうなるのかは自分で考えてみてください)。