vmjumpcc

 

 

Description

When evaluated, this vm instruction performs a generic dynamically typed compare of the source value with the comparitor value. If the comparison is true, the instruction pointer is set equal to the label argument; otherwise, the instruction pointer is promoted as usual. Conversion between different numeric types is automatic. Comparison of String types and Symbol types involves a full ascii comparison of their string data. Comparison of all other object types involves a deep comparison of their structured content.

The condition code for this instruction cc may compare for less than, less than or equal, equal, not equal, greater than, greater than or equal, all depending upon the value of cc. The condition code cc is an extension to the instruction name so that there are really six JMPcc instructions. vmjmplt, vmjmple, vmjmpeq, vmjmpne, vmjmpge, and vmjmpgt.

The operation of this vm instruction is expressed in the following C expression:

This virtual machine instruction performs a generic compare operation (see the compare built-in function). So that all value pairs may be compared, this instruction compares incompatible data types in the order of their type codes (for instance Integers always compare less than Strings). The disparate types which are compared by their values are as follows:

 

Syntax

(vmjmplt source comparitor label)


Name Format AIS Types
sourceregoffsetword
comparitorregoffset word
label immediateinteger


(vmjmpeq source comparitor label)


Name Format AIS Types
sourceregoffsetword
comparitorregoffset word
label immediateinteger


(vmjmpge source comparitor label)


Name Format AIS Types
sourceregoffsetword
comparitorregoffset word
label immediateinteger


 

Examples

Here are a number of links to Lambda coding examples which contain this instruction in various use cases.

s

 

Keyword Links

Here are a number of links to this instruction by related keywords.

[...under construction ]

 

Instruction Type

Here are a number of links to this instructions of this same type.

vmadd vmaddi vmaddn vmand
vmapply vmargcount vmargfetch vmcadd
vmcall vmcallarg vmcdiv vmcmul
vmcsub vmdebugger vmdiv vmdivi
vmdivn vmdivr vmdivri vmiadd
vmiand vmiandb vmidiv vmidivr
vmimul vmior vmiorb vmisub
vmixor vmixorb vmjump vmjumpcc
vmmove vmmovei vmmoven vmmul
vmmuli vmmuln vmnadd vmndiv
vmndivr vmnmul vmnop vmnsub
vmonerror vmopt vmor vmpop
vmpush vmref vmrefbitvector vmrefbytevector
vmrefdickey vmrefdicvalue vmrefdirkey vmrefdirvalue
vmreffltvector vmrefintvector vmreflongvector vmrefmatrix
vmrefnummatrix vmrefnumvector vmrefobjvector vmrefpcdvector
vmrefshortvector vmrefstring vmrefstrkey vmrefstrvalue
vmrefsymbol vmreftext vmrefvector vmreturn
vmself vmsend vmset vmsetbitvector
vmsetbytevector vmsetdickey vmsetdicvalue vmsetdirkey
vmsetdirvalue vmsetfltvector vmsetintvector vmsetlongvector
vmsetmatrix vmsetnummatrix vmsetnumvector vmsetobjvector
vmsetpcdvector vmsetshortvector vmsetstring vmsetstrkey
vmsetstrvalue vmsetvector vmshl vmshr
vmsmovei vmsub vmsubi vmsubn
vmtestescape vmxor

 

Argument Types

Here are a number of links which are related to this instructions .

vmadd vmaddi vmaddn vmand
vmapply vmargcount vmargfetch vmcadd
vmcall vmcdiv vmcmul vmcsub
vmdebugger vmdiv vmdivi vmdivn
vmdivr vmdivri vmiadd vmiand
vmiandb vmidiv vmidivr vmimul
vmior vmiorb vmisub vmixor
vmixorb vmjump vmjumpcc vmmul
vmmuli vmmuln vmnadd vmnatAddInteger
vmnatAddNumber vmnatAndInteger vmnatDivInteger vmnatDivNumber
vmnatDivrInteger vmnatDivrNumber vmnatJumpCCInteger vmnatJumpCCNumber
vmnatLoadCharacter vmnatLoadFloat vmnatLoadInteger vmnatLoadLong
vmnatLoadNumber vmnatLoadShort vmnatMulInteger vmnatMulNumber
vmnatOrInteger vmnatSaveCharacter vmnatSaveFloat vmnatSaveInteger
vmnatSaveLong vmnatSaveNumber vmnatSaveShort vmnatShlInteger
vmnatShrInteger vmnatSubInteger vmnatSubNumber vmnatXorInteger
vmndiv vmndivr vmnmul vmnsub
vmopt vmor vmpop vmpush
vmrefbitvector vmrefbytevector vmrefdickey vmrefdicvalue
vmrefdirkey vmrefdirvalue vmreffltvector vmrefintvector
vmreflongvector vmrefmatrix vmrefnummatrix vmrefnumvector
vmrefobjvector vmrefpcdvector vmrefshortvector vmrefstring
vmrefstrkey vmrefstrvalue vmrefsymbol vmreftext
vmrefvector vmregAbsNumber vmregAddImmediate vmregAddInteger
vmregAddNumber vmregAddPointer vmregAndImmediate vmregAndInteger
vmregCosNumber vmregDivImmediate vmregDivInteger vmregDivNumber
vmregDivrImmediate vmregDivrInteger vmregDivrNumber vmregIncPointer
vmregInteger vmregJump vmregJumpCCImmediate vmregJumpCCInteger
vmregJumpCCNumber vmregLoadAddress vmregLoadDclType vmregLoadInteger
vmregLoadJmpPointer vmregLoadNumber vmregLoadTail vmregLoadType
vmregLogNumber vmregMoveImmediate vmregMoveInteger vmregMoveNumber
vmregMulImmediate vmregMulInteger vmregMulNumber vmregNumber
vmregObjLength vmregObjPointer vmregOrImmediate vmregOrInteger
vmregPwrNumber vmregRefCharacter vmregRefFloat vmregRefInteger
vmregRefLong vmregRefNumber vmregRefShort vmregRefXCharacter
vmregRefXFloat vmregRefXInteger vmregRefXLong vmregRefXNumber
vmregRefXShort vmregRefXWord vmregRunInHarware vmregSaveDeclType
vmregSaveDeclTypeImmediate vmregSaveInteger vmregSaveNumber vmregSaveTail
vmregSaveTailImmediate vmregSetCharImmediate vmregSetCharacter vmregSetFloat
vmregSetIntImmediate vmregSetInteger vmregSetLong vmregSetLongImmediate
vmregSetNumber vmregSetShort vmregSetShortImmediate vmregSetWord
vmregSetXCharImmediate vmregSetXCharacter vmregSetXFloat vmregSetXIntImmediate
vmregSetXInteger vmregSetXLong vmregSetXLongImmediate vmregSetXNumber
vmregSetXShort vmregSetXShortImmediate vmregSetXWord vmregShlImmediate
vmregShlInteger vmregShrImmediate vmregShrInteger vmregSinNumber
vmregSqrtNumber vmregStringCompare vmregStringiCompare vmregSubImmediate
vmregSubInteger vmregSubNumber vmregSubPointer vmregTanNumber
vmregXorImmediate vmregXorInteger vmsend vmsetbitvector
vmsetbytevector vmsetdickey vmsetdicvalue vmsetdirkey
vmsetdirvalue vmsetfltvector vmsetintvector vmsetlongvector
vmsetmatrix vmsetnummatrix vmsetnumvector vmsetobjvector
vmsetpcdvector vmsetshortvector vmsetstring vmsetstrkey
vmsetstrvalue vmsetvector vmshl vmshr
vmsub vmsubi vmsubn vmvecBinary
vmvecInitialize vmvecNumScalar vmvecNumVector vmvecPop
vmvecPopNumber vmvecPush vmvecPushNumber vmvecSetIncrements
vmvecSetPointers vmvecSwapCC vmvecUnary vmxor

 

Virtual Machine Instructions

AIS Lambdas are designed to be write-once-run-anywhere executable objects. This is accomplished via the virtual machine concept of software Lambda execution. Lambda virtual machines are designed to be mapped onto the actual host microchip at the server location, providing faithful Lambda execution wherever the Lambda may travel on the Internet. There are currently several virtual machines operating within Analytic Information Server. The DRM virtual machine uses a Dynamically typed Register Machine model to provide portable Lambda execution from high level dynamically typed instructions all the way to super fast microchip-level register execution. The DRM virtual machine runs in emulation mode during the testing and debug phases of Lambda development, and there is an AIS Lambda debugger available for Lambdas running on this virtual machine. During the final release phases of Lambda development, DRM virtual machine Lambdas are automatically converted to the NATIVE virtual machine on the host computer, using the just-in-time compiler. The NATIVE virtual machine is a faithful machine language translation of the execution rules in the DRM virtual machine onto the actual host microchip at the server location. NATIVE virtual machine execution runs at microchip-level execution speeds.

Analytic Information Server (AIS)

AIS Component Systems

  • Smartbase Engine
  • QT C++ Libraries
  • MySQL Relational Database
  • AIS Lisp Libraries
  • Rapid Analytic Demo IDE