フラグ
- Sign
- Zero
- Carry
- Borrow
- Half Carry
- Parity
- Overflow
Carryフラグ
- 加算して桁上がりがワードからあふれたビット
Borrow
- Carryと同様 減算は加算に還元される
- 減算は加算に反転
Carray/Borrow Flag
- MIPSでは削除
- Cフラグなしで出来るのか→出来る
ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか
- 作者: ジュニア,ヘンリー・S.ウォーレン,Jr.,Henry S. Warren,滝沢徹,玉井浩,鈴木貢,赤池英夫,葛毅,藤波順久
- 出版社/メーカー: エスアイビーアクセス
- 発売日: 2004/09
- メディア: 単行本
- 購入: 35人 クリック: 732回
- この商品を含むブログ (126件) を見る
MIPSはキャリーフラグを削った結果それ自体は計算速度の向上に寄与しても、状況によってはキャリーフラグのあるSPARCに対して有為な性能の低下が見られた、と #kernelvm
— Fadis (@fadis_) June 6, 2015
overflowフラグ
- 2の補数表示で、符号ビットにCarry/Borrowが入ってしまった状態
- 符号なし2進数の比較 減算後Borrow(Carry)フラグをみる
harf carryフラグ
- 下位4bitからの桁溢れ(Carry)
- BCD演算など
Parityフラグ
- どうでもよかった
CPUシミュレータ作り
- 計算すると高いコストなので、評価を遅延させると良いのでは
- 参照されない値を作るのは完全な無駄
隠れオペランドコピーのちょっとした難しさ
- フラグはスタックへpush/popが可能
UNIX MAGAZINE 1991.12 の記事。#kernelvm pic.twitter.com/TVXuAFUNB2
— hichon (@hichon) 2015, 6月 6
UNIX MAGAZINE 1992.6 の記事。#kernelvm pic.twitter.com/mZfVKr6Zyy
— hichon (@hichon) June 6, 2015
評価
- コンパイラ動く、エディタも動く
- 27000くらいあった
- 人間が機械語で書いた奴はフラグを捨てる傾向
- 高級言語でかかれたプログラムはフラグを参照する傾向
- 30%くらいのフラグが捨てられているので、フラグの遅延評価は十分に効果をあげているのでは