[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
デフォルトをうまく使うのが、insn の属性を効率良く使うには重要である。
通常、insn は types と、type
と呼ばれている属性に分けられる。
type
は、このデフォルト値を表すのに使われる。
この属性は、普通は他の属性のデフォルト値を定義するのにしか使われない。
例を使ってこの属性の使い方を説明する。
ある RISC マシンを考えよう。このマシンには条件コードがあり、 レジスタで実行されるのは全語の演算だけである。 全ての命令をロード、ストア、(整数)算術演算、浮動小数点演算、分岐に 分割できるとしよう。
ここでは、ある insn の条件コードに対する効果を決定することに 注意を集中することにし、さらに可能な効果として次のものに限定する。 条件コードは、予測できない形で設定され得る(破壊される)、 変更されない、演算結果に一致するように設定される、 以前に条件コードに設定した項目が修正されたときにのみ 変更される。
そういう機種用の ‘md’ ファイルの例の一部を示す
(define_attr "type" "load,store,arith,fp,branch" (const_string "arith")) (define_attr "cc" "clobber,unchanged,set,change0" (cond [(eq_attr "type" "load") (const_string "change0") (eq_attr "type" "store,branch") (const_string "unchanged") (eq_attr "type" "arith") (if_then_else (match_operand:SI 0 "" "") (const_string "set") (const_string "clobber"))] (const_string "clobber"))) (define_insn "" [(set (match_operand:SI 0 "general_operand" "=r,r,m") (match_operand:SI 1 "general_operand" "r,m,r"))] "" "@ move %0,%1 load %0,%1 store %0,%1" [(set_attr "type" "arith,load,store")]) |
上の例で我々は、マシンワードより小さな量について算術演算を実行すると、 それにより条件コードに全ワードの結果に対応する値を設定するので、 条件コードが破壊されると仮定していることに注意。
This document was generated
using texi2html 1.78.