by shigemk2

当面は技術的なことしか書かない

フラグの話 #kernelvm

フラグ

  • 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件) を見る

overflowフラグ

  • 2の補数表示で、符号ビットにCarry/Borrowが入ってしまった状態
  • 符号なし2進数の比較 減算後Borrow(Carry)フラグをみる

harf carryフラグ

  • 下位4bitからの桁溢れ(Carry)
  • BCD演算など

Parityフラグ

  • どうでもよかった

CPUシミュレータ作り

  • 計算すると高いコストなので、評価を遅延させると良いのでは
  • 参照されない値を作るのは完全な無駄

d.hatena.ne.jp

隠れオペランドコピーのちょっとした難しさ

  • フラグはスタックへpush/popが可能

評価

  • コンパイラ動く、エディタも動く
  • 27000くらいあった
  • 人間が機械語で書いた奴はフラグを捨てる傾向
  • 高級言語でかかれたプログラムはフラグを参照する傾向
  • 30%くらいのフラグが捨てられているので、フラグの遅延評価は十分に効果をあげているのでは