課題ASM8~ASM10に関しては、レジスタの退避は規約どおりに行う事。つまり例えば課題ASM8であれば、自分が作成したmaxof2.sだけではなく、誰か他人が作ったmaxof2.sに対しても(それが呼出規約に従っている限り)適切な動作をするようにしなければならない。
呼び出した関数(自作)ではa0とa1しか使っておらずa2は使っていないとした時に、どうせ変更されないのだからと呼び出し元の関数(自作)でローカル変数をa2に退避するのは正しい処理ではない。(どちらも自作である場合は正しく動作するが、他人が作った関数に対して正しく動作する保障がない。)
資料ASMの第3回をよく読む事。
3つの整数を引数として受けとり、最大の値を返す関数maxof3をアセンブリで実装せよ。ただし、自作のmaxof2関数を2回呼び出して用いる事。
締切: 12/15 23:59
まず、C標準ライブラリのstrlenと同じ動作をする関数であるmystrlenをアセンブリで実装せよ。その上で、作成したmystrlen関数を呼び出して用いるmystrcat関数(C標準ライブラリのstrcatと同じ動作をする関数であるとする)をアセンブリで実装せよ。ただし、NULL文字の判定はmystrcat内では行ってはならないものとする。また、動作に必要なメモリ領域はCプログラムの中であらかじめ確保しておいて良い。
締切: 12/15 23:59
整数nを引数として受け取った際に、 n の階乗を繰り返しによって求める関数 factをアセンブリで実装せよ。ただし、再帰関数呼び出しを利用すること。(注: 0の階乗は1である。)
締切: 12/15 23:59