今日の日記は同級生専用。先輩も分かるだろうけど。

機械語の試験、時間内に半分しかできなかったよ…。

パリティが奇数なら1、偶数なら0ってどうしたらできるかなって
いろいろ考えたんだけど、終わってから気付いた。
andで比較して「inc %eax」していって、ループ抜けてから$1とandとれば良かった…

0にincしていくと、
00000000
00000001
00000010
00000011

だもんね。一番下見ればいいんだね。
私は毎回$1とxor取ることにした。これ思いつくのに時間がかかってだな…。
でも、最初は%eaxが1ならと0ならで場合分けしようとか考えてたんだから、
それに比べればずいぶんましかな。2で割った余りってのも考えたけど。


単位来るかなあ…かなり微妙…。というか通り越してヤバイかな。

つか、紙の上でプログラミングするのは苦痛だなあ。
切り貼り(コピペ)できないんだもん。何が抜けてるかとか考えるのに時間が…。
でも最後にまとめて課題やったせいか(笑)多少は理解できたみたいで良かった。


CG(コンピュータグラフィックス)は、持ち込み可だったんだけど、
持ち込んだ講義プリントがほぼ出る形だった。(機械語も持ち込み可)
楽といえば楽だったが、この問題で持ち込み不可にすればいいんじゃないのか?
いや、私は困るんだけどさ。でもなあ…。

三角形を書く関数で、

for(i = 0; i < 3; i++){
 pushMatrix();
・・・・
 rotate2(120.*(float)i);
・・・・
 popMatrix();
}


みたいなので、pushとpopが無い場合は一行をどう書き換えたら三角形が表示できるか
という問題ですごい悩んだ。かなり時間食ったけど他時間かかるところなかったから
機械語と違ってヤバイことにはならなかったけど。

普通に、

rotate2(120.*(float)i);

rotate2(120.);

にするというのが全く思いつかなくて、


rotate2(120.*(float)(i*i));

とかいうのになった(笑)。
これだと、(i*i)は0,1,4と遷移するので、120度を何回動いたかに換算すると、
0 mod 3 = 0, 1 mod 3 = 1, (1 + 4) mod 3 = 2

となり、見事三角形が書ける…はずです(笑)。
合ってると思うけど、ちゃんと丸になるかなあ?