gmslEnumerations

gmslEnumerations

 

gmSL Enumerations

The gmSL enumerations are defined in the opcodes.xml and enumerations.xml language files.

The Opcode Enumerations

The opcode enumerations are contained in the Opcodes.xml language file. They are used to describe various attributes of the individual opcodes.

The opcTypes Enumeration

The opcTypes enumeration describes the type of the operation code. It has the following entries:

 

Entry

Description

Arithmetic

The arithmetic operators perform calculations, which may be actual arithmetic but might well be any other type of calculation like masking or concatenation or comparison. They typically have suboperations for the different binary types that may be involved.

SingleByte

The single byte operators have simple generic roles within the intermediate language like introducing a new code sequence or marking the end of some sequence.

DoubleByte

The double byte operators have generic roles within the intermediate language. Their emission consists of the operation emission code followed by the suboperation emission code. Within other statements they are referenced as OPC.Subcode.

ShortValue

The short value operator emission is followed by a two-byte integer value used to specify a simple integer constant or number.

SymbolAddr

The symbol address operators are followed by a four-byte integer value that specifies the root offset in the current storage area of a symbol defined within the source code.

StringAddr

The string address operators are followed by a four-byte integer value the specifies the offset in current storage of a character string. This string might be an actual string or it might be a value constant of some sort.

OpcodeAddr

The opcode address operators are followed by a four-byte integer value that marks the offset of the start of an intermediate language code sequence.

BinaryType

The binary type operators, not to be confused with Arithmetic binary operators, have a suboperation code that defines a binary type. They are used extensively in the intermediate code to specify the binary result-type of a sequence of operations.

LibraryAdr

The library address operators are followed by a four-byte integer value that specifies the root in either current storage or language storage of an external symbol in use by the source code. Positive roots are to current storage; while negative roots are to language storage.

LibPattern

The library pattern operators are followed by the offset of a surface pattern description either in the current storage area or in language storage.

ObjectType

The object type operators have a suboperation code that specifies the type of object that the some sequence of operations pertain to.



The opcRoles Enumeration

The opcRoles enumeration describes the general role the operation performs in the intermediate language. It adds details to the opcType information. It has the following entries:

 

Entry

Description

NewLev

There are many nested sequences of operators. This role starts a new nesting level.

EndLev

There are many nested sequences of operators. This role ends a nesting level.

LoadSym

This role loads a source code symbol.

LoadLib

This role loads a library symbol.

LoadInt

This role loads a short integer value.

LoadStr

This role loads a character string.

LoadLng

This role loads a string representation of a long integer constant.

LoadDbl

This role loads a string representation of a real constant.

LoadLog

This role loads a binary representation of a logical (boolean) constant.

LoadDat

This role loads a string representation of a date constant.

LoadSpv

This role loads a subcode that defines some source language particular special value like Me.

LoadTyp

This role loads an enumeration entry value.

Unary

This role defines a unary operator.

Binary

This role defines a non-relational binary operator.

Relate

This role defines a relational binary operator.

Member

This role asserts the membership of a code sequence in the preceding code sequence.

Clsref

This role asserts that the subcode refers to a class component

Convert

This role performs a type-conversion of some sort.

Comment

This role introduces a non-executable comment.



Table of Contents