Instruction Set Architecture (ISA)

Agilla has an extensible instruction set. The basic instructions are listed below. These are the most common instructions used.

Note that Agilla has an Extended Instruction Set.

B-class Instructions [00ii iiii]

  

Instruction

Short Description Opcode
   halt Halt execution 0x00
   addr Push host address 0x01
   aid Push agent ID 0x02
   rand Push random number 0x03
   cpush Pushes condition onto the stack 0x04
   loc Push host location 0x05
   vicinity Checks if dist <= 2 0x06
   clear Clear the operand stack 0x07
   numnbrs number of neighbors 0x08
   randnbr get random neighbor 0x09
   wait wait 0x0a
  

Instruction

Short Description Opcode
   inc Increment 0x0b
   clearvar Clear heap variable 0x0c
   inv Invert a value 0x0d
   not Boolean not 0x0e
   lnot logical not 0x0f
   copy Copy top of operand stack 0x10
   pop Pop top of operand stack 0x11
   cpull Pulls value from stack onto condition 0x12
   sleep Sleep 0x13
   jumpc Absolute jump condition 0x14
   jumps Absolute jump stack 0x15
   putled Actuate LEDs 0x16
   smove Strong migration 0x17
   wmove Weak migration 0x18
   sclone Strong clone 0x19
   wclone Weak clone 0x1a
   getvars get a heap var, address in stack 0x1b
   setvars set heap var, address in stack 0x1c
   getnbr get neighbor address 0x1d
   cisnbr is neighbor 0x1e
   sense take a sensor reading 0x1f
   dec decrement 0x20
  

Instruction

Short Description Opcode
   dist distance 0x21
   swap Swap top two variables 0x22
   land logical bitwise AND 0x23
   lor logical bitwise OR 0x24
   and boolean AND 0x25
   or boolean OR 0x26
   mul Multiply 0x27
   div Divide 0x28
   add Add two values 0x29
   mod Modulo 0x2a
   ceq Equal 0x2b
   cneq Not Equal 0x2c
   clt Less than 0x2d
   cgt Greater than 0x2e
   clte Less than or equal 0x2f
   cgte Greater than or equal 0x30
   ceqtype Tests type equality 0x31
   cistype Checks type 0x32
   out out on host tuple space 0x33
   inp inp on host tuple space 0x34
   rdp rdp on host tuple space 0x35
   in in on host tuple space 0x36
   rd rd on host tuple space 0x37
   endrxn end of reaction 0x38
   rout remote OUT 0x39
   rinp remote INP 0x3a
   rrdp remote RDP 0x3b
  

routg

remote group out 0x3c
  

rrdpg

remote RDPG 0x3d
   regrxn register reaction 0x3e
   deregrxn deregister reaction 0x3f

 

T-Class Instructions [0100 ixxx]

  

Instruction

Short Description Opcode
   pushrt push reading type 0x40-0x47
   pusht Push type 0x48-0x4d
       0x4e-0xe4f

 

E-Class Instructions [0101 iiii xxxx xxxx xxxx xxxx]

  

Instruction

Short Description Opcode
   pushn Push a name onto the operand stack 0x50
   pushcl Push constant long 0x51
   pushloc Push a location onto the stack 0x52
   reserved (N/A) Reserved for supporting extended ISA 0x53-0x5f

 

V-Class Instructions [011i xxxx]

  

Instruction

Short Description Opcode
   getvar moves a variable from the heap to the stack 0x60 - 0x6f
   setvar Moves a variable from the stack to the heap 0x70 - 0x7f

 

J-Class Instructions [10ix xxxx]

  

Instruction

Description Opcode
   rjumpc conditional relative jump 0x80 - 0x9f
   rjump unconditional relative jump 0xa0 - 0xbf

 

X-Class Instructions [11xx xxxx]

  

Instruction

Description Opcode
   pushc Push a constant value between 0-63 onto the stack 0xc0 - 0xff

Extended Instruction Set

 


This work is supported by the ONR MURI Project CONTESSA and the NSF under grant number CCR-9970939.