Chapter 4 Avida instruction set
4.1 Default instructions
We used the following default instructions in all of our experiments:
# No-ops
INST nop-A
INST nop-B
INST nop-C
# Flow control operations
INST if-n-equ
INST if-less
INST if-label
INST mov-head
INST jmp-head
INST get-head
INST set-flow
# Single Argument Math
INST shift-r
INST shift-l
INST inc
INST dec
INST push
INST pop
INST swap-stk
INST swap
# Double Argument Math
INST add
INST sub
INST nand
# Biological Operations
INST h-copy
INST h-alloc
INST h-divide
# I/O and Sensory
INST IO
INST h-search
Each of these instructions is described in the Avida documentation.
4.2 Custom instructions
We implemented several custom instructions for this work:
INST sense-react-NAND- Provides sensory feedback on whether the NAND Boolean logic task is currently rewarded or punished by pushing a 1 to the organism’s active stack if it is rewarded, a -1 if it is punished, and a 0 if it is neither rewarded nor punished.
INST sense-react-NOT- Provides sensory feedback on whether the NOT Boolean logic task is currently rewarded or punished by pushing a 1 to the organism’s active stack if it is rewarded, a -1 if it is punished, and a 0 if it is neither rewarded nor punished.
INST sense-react-AND- Provides sensory feedback on whether the AND Boolean logic task is currently rewarded or punished by pushing a 1 to the organism’s active stack if it is rewarded, a -1 if it is punished, and a 0 if it is neither rewarded nor punished.
INST sense-react-ORN- Provides sensory feedback on whether the ORN Boolean logic task is currently rewarded or punished by pushing a 1 to the organism’s active stack if it is rewarded, a -1 if it is punished, and a 0 if it is neither rewarded nor punished.
INST sense-react-OR- Provides sensory feedback on whether the OR Boolean logic task is currently rewarded or punished by pushing a 1 to the organism’s active stack if it is rewarded, a -1 if it is punished, and a 0 if it is neither rewarded nor punished.
INST sense-react-ANDN- Provides sensory feedback on whether the ANDN Boolean logic task is currently rewarded or punished by pushing a 1 to the organism’s active stack if it is rewarded, a -1 if it is punished, and a 0 if it is neither rewarded nor punished.
INST poison- Each time
poisonis executed, the organism reduces the metabolic rate of the organism by a fixed rate (specified byPOISON_PENALTYinavida.cfg).
- Each time