⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtl.texi

📁 理解和实践操作系统的一本好书
💻 TEXI
📖 第 1 页 / 共 5 页
字号:
for it.  In the C code, machine modes are represented by an enumerationtype, @code{enum machine_mode}, defined in @file{machmode.def}.  Each RTLexpression has room for a machine mode and so do certain kinds of treeexpressions (declarations and types, to be precise).In debugging dumps and machine descriptions, the machine mode of an RTLexpression is written after the expression code with a colon to separatethem.  The letters @samp{mode} which appear at the end of each machine modename are omitted.  For example, @code{(reg:SI 38)} is a @code{reg}expression with machine mode @code{SImode}.  If the mode is@code{VOIDmode}, it is not written at all.Here is a table of machine modes.  The term ``byte'' below refers to anobject of @code{BITS_PER_UNIT} bits (@pxref{Storage Layout}).@table @code@findex BImode@item BImode``Bit'' mode represents a single bit, for predicate registers.@findex QImode@item QImode``Quarter-Integer'' mode represents a single byte treated as an integer.@findex HImode@item HImode``Half-Integer'' mode represents a two-byte integer.@findex PSImode@item PSImode``Partial Single Integer'' mode represents an integer which occupiesfour bytes but which doesn't really use all four.  On some machines,this is the right mode to use for pointers.@findex SImode@item SImode``Single Integer'' mode represents a four-byte integer.@findex PDImode@item PDImode``Partial Double Integer'' mode represents an integer which occupieseight bytes but which doesn't really use all eight.  On some machines,this is the right mode to use for certain pointers.@findex DImode@item DImode``Double Integer'' mode represents an eight-byte integer.@findex TImode@item TImode``Tetra Integer'' (?) mode represents a sixteen-byte integer.@findex OImode@item OImode``Octa Integer'' (?) mode represents a thirty-two-byte integer.@findex QFmode@item QFmode``Quarter-Floating'' mode represents a quarter-precision (single byte)floating point number.@findex HFmode@item HFmode``Half-Floating'' mode represents a half-precision (two byte) floatingpoint number.@findex TQFmode@item TQFmode``Three-Quarter-Floating'' (?) mode represents a three-quarter-precision(three byte) floating point number.@findex SFmode@item SFmode``Single Floating'' mode represents a four byte floating point number.In the common case, of a processor with IEEE arithmetic and 8-bit bytes,this is a single-precision IEEE floating point number; it can also beused for double-precision (on processors with 16-bit bytes) andsingle-precision VAX and IBM types.@findex DFmode@item DFmode``Double Floating'' mode represents an eight byte floating point number.In the common case, of a processor with IEEE arithmetic and 8-bit bytes,this is a double-precision IEEE floating point number.@findex XFmode@item XFmode``Extended Floating'' mode represents an IEEE extended floating pointnumber.  This mode only has 80 meaningful bits (ten bytes).  Someprocessors require such numbers to be padded to twelve bytes, othersto sixteen; this mode is used for either.@findex SDmode@item SDmode``Single Decimal Floating'' mode represents a four byte decimalfloating point number (as distinct from conventional binary floatingpoint).@findex DDmode@item DDmode``Double Decimal Floating'' mode represents an eight byte decimalfloating point number.@findex TDmode@item TDmode``Tetra Decimal Floating'' mode represents a sixteen byte decimalfloating point number all 128 of whose bits are meaningful.@findex TFmode@item TFmode``Tetra Floating'' mode represents a sixteen byte floating point numberall 128 of whose bits are meaningful.  One common use is theIEEE quad-precision format.@findex QQmode@item QQmode``Quarter-Fractional'' mode represents a single byte treated as a signedfractional number.  The default format is ``s.7''.@findex HQmode@item HQmode``Half-Fractional'' mode represents a two-byte signed fractional number.The default format is ``s.15''.@findex SQmode@item SQmode``Single Fractional'' mode represents a four-byte signed fractional number.The default format is ``s.31''.@findex DQmode@item DQmode``Double Fractional'' mode represents an eight-byte signed fractional number.The default format is ``s.63''.@findex TQmode@item TQmode``Tetra Fractional'' mode represents a sixteen-byte signed fractional number.The default format is ``s.127''.@findex UQQmode@item UQQmode``Unsigned Quarter-Fractional'' mode represents a single byte treated as anunsigned fractional number.  The default format is ``.8''.@findex UHQmode@item UHQmode``Unsigned Half-Fractional'' mode represents a two-byte unsigned fractionalnumber.  The default format is ``.16''.@findex USQmode@item USQmode``Unsigned Single Fractional'' mode represents a four-byte unsigned fractionalnumber.  The default format is ``.32''.@findex UDQmode@item UDQmode``Unsigned Double Fractional'' mode represents an eight-byte unsignedfractional number.  The default format is ``.64''.@findex UTQmode@item UTQmode``Unsigned Tetra Fractional'' mode represents a sixteen-byte unsignedfractional number.  The default format is ``.128''.@findex HAmode@item HAmode``Half-Accumulator'' mode represents a two-byte signed accumulator.The default format is ``s8.7''.@findex SAmode@item SAmode``Single Accumulator'' mode represents a four-byte signed accumulator.The default format is ``s16.15''.@findex DAmode@item DAmode``Double Accumulator'' mode represents an eight-byte signed accumulator.The default format is ``s32.31''.@findex TAmode@item TAmode``Tetra Accumulator'' mode represents a sixteen-byte signed accumulator.The default format is ``s64.63''.@findex UHAmode@item UHAmode``Unsigned Half-Accumulator'' mode represents a two-byte unsigned accumulator.The default format is ``8.8''.@findex USAmode@item USAmode``Unsigned Single Accumulator'' mode represents a four-byte unsignedaccumulator.  The default format is ``16.16''.@findex UDAmode@item UDAmode``Unsigned Double Accumulator'' mode represents an eight-byte unsignedaccumulator.  The default format is ``32.32''.@findex UTAmode@item UTAmode``Unsigned Tetra Accumulator'' mode represents a sixteen-byte unsignedaccumulator.  The default format is ``64.64''.@findex CCmode@item CCmode``Condition Code'' mode represents the value of a condition code, whichis a machine-specific set of bits used to represent the result of acomparison operation.  Other machine-specific modes may also be used forthe condition code.  These modes are not used on machines that use@code{cc0} (see @pxref{Condition Code}).@findex BLKmode@item BLKmode``Block'' mode represents values that are aggregates to which none ofthe other modes apply.  In RTL, only memory references can have this mode,and only if they appear in string-move or vector instructions.  On machineswhich have no such instructions, @code{BLKmode} will not appear in RTL@.@findex VOIDmode@item VOIDmodeVoid mode means the absence of a mode or an unspecified mode.For example, RTL expressions of code @code{const_int} have mode@code{VOIDmode} because they can be taken to have whatever mode the contextrequires.  In debugging dumps of RTL, @code{VOIDmode} is expressed bythe absence of any mode.@findex QCmode@findex HCmode@findex SCmode@findex DCmode@findex XCmode@findex TCmode@item QCmode, HCmode, SCmode, DCmode, XCmode, TCmodeThese modes stand for a complex number represented as a pair of floatingpoint values.  The floating point values are in @code{QFmode},@code{HFmode}, @code{SFmode}, @code{DFmode}, @code{XFmode}, and@code{TFmode}, respectively.@findex CQImode@findex CHImode@findex CSImode@findex CDImode@findex CTImode@findex COImode@item CQImode, CHImode, CSImode, CDImode, CTImode, COImodeThese modes stand for a complex number represented as a pair of integervalues.  The integer values are in @code{QImode}, @code{HImode},@code{SImode}, @code{DImode}, @code{TImode}, and @code{OImode},respectively.@end tableThe machine description defines @code{Pmode} as a C macro which expandsinto the machine mode used for addresses.  Normally this is the modewhose size is @code{BITS_PER_WORD}, @code{SImode} on 32-bit machines.The only modes which a machine description @i{must} support are@code{QImode}, and the modes corresponding to @code{BITS_PER_WORD},@code{FLOAT_TYPE_SIZE} and @code{DOUBLE_TYPE_SIZE}.The compiler will attempt to use @code{DImode} for 8-byte structures andunions, but this can be prevented by overriding the definition of@code{MAX_FIXED_MODE_SIZE}.  Alternatively, you can have the compileruse @code{TImode} for 16-byte structures and unions.  Likewise, you canarrange for the C type @code{short int} to avoid using @code{HImode}.@cindex mode classesVery few explicit references to machine modes remain in the compiler andthese few references will soon be removed.  Instead, the machine modesare divided into mode classes.  These are represented by the enumerationtype @code{enum mode_class} defined in @file{machmode.h}.  The possiblemode classes are:@table @code@findex MODE_INT@item MODE_INTInteger modes.  By default these are @code{BImode}, @code{QImode},@code{HImode}, @code{SImode}, @code{DImode}, @code{TImode}, and@code{OImode}.@findex MODE_PARTIAL_INT@item MODE_PARTIAL_INTThe ``partial integer'' modes, @code{PQImode}, @code{PHImode},@code{PSImode} and @code{PDImode}.@findex MODE_FLOAT@item MODE_FLOATFloating point modes.  By default these are @code{QFmode},@code{HFmode}, @code{TQFmode}, @code{SFmode}, @code{DFmode},@code{XFmode} and @code{TFmode}.@findex MODE_DECIMAL_FLOAT@item MODE_DECIMAL_FLOATDecimal floating point modes.  By default these are @code{SDmode},@code{DDmode} and @code{TDmode}.@findex MODE_FRACT@item MODE_FRACTSigned fractional modes.  By default these are @code{QQmode}, @code{HQmode},@code{SQmode}, @code{DQmode} and @code{TQmode}.@findex MODE_UFRACT@item MODE_UFRACTUnsigned fractional modes.  By default these are @code{UQQmode}, @code{UHQmode},@code{USQmode}, @code{UDQmode} and @code{UTQmode}.@findex MODE_ACCUM@item MODE_ACCUMSigned accumulator modes.  By default these are @code{HAmode},@code{SAmode}, @code{DAmode} and @code{TAmode}.@findex MODE_UACCUM@item MODE_UACCUMUnsigned accumulator modes.  By default these are @code{UHAmode},@code{USAmode}, @code{UDAmode} and @code{UTAmode}.@findex MODE_COMPLEX_INT@item MODE_COMPLEX_INTComplex integer modes.  (These are not currently implemented).@findex MODE_COMPLEX_FLOAT@item MODE_COMPLEX_FLOATComplex floating point modes.  By default these are @code{QCmode},@code{HCmode}, @code{SCmode}, @code{DCmode}, @code{XCmode}, and@code{TCmode}.@findex MODE_FUNCTION@item MODE_FUNCTIONAlgol or Pascal function variables including a static chain.(These are not currently implemented).@findex MODE_CC@item MODE_CCModes representing condition code values.  These are @code{CCmode} plusany @code{CC_MODE} modes listed in the @file{@var{machine}-modes.def}.  @xref{Jump Patterns},also see @ref{Condition Code}.@findex MODE_RANDOM@item MODE_RANDOM

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -