後でちゃんと書いた > これ
某所で2年生が予想通りSPARCアセンブラをやっているのを見る, おそらくstrlen関数
折角だから全てのDelayed Slotをつぶさなければと考えてしまう
いちいち見比べるのも面倒なので問題のソースだけ引用
(略) cmp %i2, 0 be end add %i1, 1, %i1 b start nop end: sub %i1, 1, %i1 ret restore
微妙にインデントだけは追加してあるが気にしない
で, こんなことをやるぐらいならこうした方が速いのではと考える
(略) cmp %i2, 0 bne start add %i1, 1, %i1 end: ! This label is not required sub %i1, 1, %i1 ret restore
もうちょっと邪道なことをやればこんな方法もある
(略) cmp %i2, 0 bne,a start add %i1, 1, %i1 end: ! This label is not required ret restore
ちなみにbneはbeと条件が逆なBranch, Branch命令の後に付けた『,a』オプションは非分岐時にDelayed Instructionをnop化するフラグ, 使う分には便利(HW屋はおそらくWrite Enableを弄っているのだろう, 去年はここに更に分岐命令を入れていたつわものも居たが, これはお勧めできない泣きそう)
Comments (0):
週末にしかやっていないような気がする, 平日も頑張らなければ…
明日は連続系でもやろうかな…
今週の作戦: 下手な鉄砲数打ちゃ当たれ
こんな聖狐を助けてください
Comments (0):