Opnd
ImmOpnd
Used by the intermediate representation (IR) to reference constants such as integer constants, floating point constants, pointer constants, and symbolic constants such as FRAMESIZE.
if (instr2.SrcOpnd.IsImmOpnd)
    Phx.Output.WriteLine("IsImmOpnd");

Например:

   _i<2>             = ASSIGN 3                                             #14

Операнд 3 - ImmOpnd
LabelOpnd
Used by the intermediate representation (IR) in Phoenix to reference user-defined or tool-generated label symbols. LabelOpnds represent the control-flow edges in the IR graph. All control flow is explicitly described with LabelOpnds.
Resources:
 
        CBRANCH t1, UserLabel, $L1
UserLabel:  // trueGOTO Over
$L1:        // false
        …
$Over:
----------------------------------------------------------------------------
        SWITCH t1, 
        SWDEFAULT $default
        SWCASE    1..1 $Case1
        SWCASE    2..2 $Case2
        SWCASE    n..n $CaseN
        SWEND
$default:
$Case1:
$Case2:
…
$CaseN:
 
----------------------------------------------------------------------------
         FPADD x, y  $FPExceptHandler
         …
$FPExceptHandler:
----------------------------------------------------------------------------

VarOpnd

Used to reference a variety of resources, such as user variables, compiler temporaries, or physical registers. A VarOpnd can reference either the content or address of a resource. The reference can be to either the complete resource or portion of the resource, based on the field information provided. The resource can be a basic data type like an integer, or an aggregate type like a structure.

Например:

   _k<3>             = ASSIGN 0                                             #15

Операнд _k<3> - VarOpnd
IsSym IsTmp IsReg IsMem IsAddr Пример Описание
x t275
x &_a
x _b<6>
t275
t275
t275
t275
t275
t275
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.