>>133は、アセンブラでコード書いてると自然にそうなるってこと。
ルーチン内ではできるだけ汎用レジスタを使って処理したほうが早くなるから、最初にメモリから必要なデータを持ってきた後は
極力レジスタだけで処理するように書く。後からその処理の途中に別の処理を入れることになって、別の関数を挟んだとすると
レジスタの値を変えてはいけないから、その関数に入ったところで全レジスタを待避し、関数の終わりで戻さないといけなくなる。
Cで同じことをしてアセンブラに展開したコードを見ると、変数の値はメモリに置いておき、必要になったらレジスタにロードして
計算したら結果をまたメモリに戻すという処理をしている。後から途中に関数が追加されても、その関数はメモリから値を
持ってきて処理するからレジスタを退避する必要はない。関数に渡すパラメータなどもスタックに入れて渡すから
同じくレジスタを退避しなくて良い。
しかしこのやり方ではメモリとレジスタ間のセーブ/ロードが頻繁に起こるので、アセンブラのソースで見るといかにも効率が悪くて
遅いとわかる。当たり前だがメモリ - レジスタ間のセーブ/ロードはレジスタ内だけの演算よりずっと遅い。
そうするくらいなら、必要なときだけレジスタを退避・復帰させた方がまし。さらに、これがforなどのループ内で使われた場合、
この遅さがプログラム全体の遅さになる。Cコンパイラのコード生成は、アセンブラから見れば遅くて無駄だらけに見える。
その分、ソースが見やすいから便利なんだけれども。
探検
FreeBSDを語れ Part49
■ このスレッドは過去ログ倉庫に格納されています
2019/09/14(土) 13:04:16.01
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪 [七波羅探題★]
- 高市首相「多様なコメの増産を進める」 方針転換への懸念払拭狙いか ★2 [どどん★]
- 高市内閣「支持」64%「不支持」19% NHK世論調査 [少考さん★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 自衛官の給与、20歳・35歳・40歳いずれも年間20万円以上引き上げへ…中堅・ベテランの離職防ぐ狙い [どどん★]
- ネトウヨ、狂う「今日は聖戦の開戦の日だ。打倒中国。今こそ八紘一宇の理想を再び。日本よ、誇りを取り戻せ」 [165981677]
- 【悲報】TikTok公式ストア日本展開大失敗 高市早苗の果実か [695089791]
- ルーナ(・o・🍬)とルーナイトでたこ🐙焼きパーティするのら🍬!🏡
- 中国「レーダー照射は自業自得。訓練海域に無断でノコノコ侵入してんじゃねーよ間抜け自衛隊😁」 高市早苗また負ける… [271912485]
- 【マンハント】丘の上から民間人を「狙撃」─サラエボの「イスラム教徒狩りツアー」に参加していた日本人がいた? [979264442]
- 【悲報】ヴィヴィ、普通にウザくてノエル団長がかわいそう
