ducky.cpu.instructions module¶
-
class
ducky.cpu.instructions.
ADD
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'add'¶
-
opcode
= 28¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
AND
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'and'¶
-
opcode
= 34¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
BE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'be'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BG
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bg'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BGE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bge'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bl'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BLE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'ble'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BNE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bne'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BNO
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bno'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BNS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bns'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BNZ
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bnz'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BO
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bo'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bs'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
BZ
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bz'¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
CALL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._JUMP
-
mnemonic
= 'call'¶
-
opcode
= 15¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
CAS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'cas'¶
-
opcode
= 7¶
-
operands
= ['r', 'r', 'r']¶
-
-
class
ducky.cpu.instructions.
CLI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'cli'¶
-
opcode
= 17¶
-
operands
= []¶
-
-
class
ducky.cpu.instructions.
CMP
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._CMP
-
mnemonic
= 'cmp'¶
-
opcode
= 47¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
CMPU
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._CMP
-
mnemonic
= 'cmpu'¶
-
opcode
= 48¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
CTR
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_R
-
mnemonic
= 'ctr'¶
-
opcode
= 60¶
-
operands
= ['r', 'r']¶
-
-
class
ducky.cpu.instructions.
CTW
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_R
-
mnemonic
= 'ctw'¶
-
opcode
= 61¶
-
operands
= ['r', 'r']¶
-
-
class
ducky.cpu.instructions.
DEC
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R
-
mnemonic
= 'dec'¶
-
opcode
= 27¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
DIV
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'div'¶
-
opcode
= 31¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
Descriptor
(instruction_set)[source]¶ Bases:
object
-
inst_aligned
= False¶
-
mnemonic
= None¶
-
opcode
= None¶
-
operands
= None¶
-
relative_address
= False¶
-
-
class
ducky.cpu.instructions.
Descriptor_R
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'r'¶
-
-
class
ducky.cpu.instructions.
Descriptor_RI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'ri'¶
-
-
class
ducky.cpu.instructions.
Descriptor_R_I
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'r,i'¶
-
-
class
ducky.cpu.instructions.
Descriptor_R_R
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'r,r'¶
-
-
class
ducky.cpu.instructions.
Descriptor_R_RI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'r,ri'¶
-
-
class
ducky.cpu.instructions.
DuckyInstructionSet
[source]¶ Bases:
ducky.cpu.instructions.InstructionSet
-
instruction_set_id
= 0¶
-
instructions
= [<ducky.cpu.instructions.NOP object>, <ducky.cpu.instructions.INT object>, <ducky.cpu.instructions.IPI object>, <ducky.cpu.instructions.RETINT object>, <ducky.cpu.instructions.CALL object>, <ducky.cpu.instructions.RET object>, <ducky.cpu.instructions.CLI object>, <ducky.cpu.instructions.STI object>, <ducky.cpu.instructions.HLT object>, <ducky.cpu.instructions.RST object>, <ducky.cpu.instructions.IDLE object>, <ducky.cpu.instructions.PUSH object>, <ducky.cpu.instructions.POP object>, <ducky.cpu.instructions.INC object>, <ducky.cpu.instructions.DEC object>, <ducky.cpu.instructions.ADD object>, <ducky.cpu.instructions.SUB object>, <ducky.cpu.instructions.CMP object>, <ducky.cpu.instructions.J object>, <ducky.cpu.instructions.AND object>, <ducky.cpu.instructions.OR object>, <ducky.cpu.instructions.XOR object>, <ducky.cpu.instructions.NOT object>, <ducky.cpu.instructions.SHL object>, <ducky.cpu.instructions.SHR object>, <ducky.cpu.instructions.SHRS object>, <ducky.cpu.instructions.LW object>, <ducky.cpu.instructions.LS object>, <ducky.cpu.instructions.LB object>, <ducky.cpu.instructions.LI object>, <ducky.cpu.instructions.LIU object>, <ducky.cpu.instructions.LA object>, <ducky.cpu.instructions.STW object>, <ducky.cpu.instructions.STS object>, <ducky.cpu.instructions.STB object>, <ducky.cpu.instructions.MOV object>, <ducky.cpu.instructions.SWP object>, <ducky.cpu.instructions.MUL object>, <ducky.cpu.instructions.DIV object>, <ducky.cpu.instructions.UDIV object>, <ducky.cpu.instructions.MOD object>, <ducky.cpu.instructions.CMPU object>, <ducky.cpu.instructions.CAS object>, <ducky.cpu.instructions.SIS object>, <ducky.cpu.instructions.BE object>, <ducky.cpu.instructions.BNE object>, <ducky.cpu.instructions.BZ object>, <ducky.cpu.instructions.BNZ object>, <ducky.cpu.instructions.BO object>, <ducky.cpu.instructions.BNO object>, <ducky.cpu.instructions.BS object>, <ducky.cpu.instructions.BNS object>, <ducky.cpu.instructions.BG object>, <ducky.cpu.instructions.BGE object>, <ducky.cpu.instructions.BL object>, <ducky.cpu.instructions.BLE object>, <ducky.cpu.instructions.SETE object>, <ducky.cpu.instructions.SETNE object>, <ducky.cpu.instructions.SETZ object>, <ducky.cpu.instructions.SETNZ object>, <ducky.cpu.instructions.SETO object>, <ducky.cpu.instructions.SETNO object>, <ducky.cpu.instructions.SETS object>, <ducky.cpu.instructions.SETNS object>, <ducky.cpu.instructions.SETG object>, <ducky.cpu.instructions.SETGE object>, <ducky.cpu.instructions.SETL object>, <ducky.cpu.instructions.SETLE object>, <ducky.cpu.instructions.SELE object>, <ducky.cpu.instructions.SELNE object>, <ducky.cpu.instructions.SELZ object>, <ducky.cpu.instructions.SELNZ object>, <ducky.cpu.instructions.SELO object>, <ducky.cpu.instructions.SELNO object>, <ducky.cpu.instructions.SELS object>, <ducky.cpu.instructions.SELNS object>, <ducky.cpu.instructions.SELG object>, <ducky.cpu.instructions.SELGE object>, <ducky.cpu.instructions.SELL object>, <ducky.cpu.instructions.SELLE object>, <ducky.cpu.instructions.LPM object>, <ducky.cpu.instructions.CTR object>, <ducky.cpu.instructions.CTW object>, <ducky.cpu.instructions.FPTC object>]¶
-
opcode_desc_map
= {<DuckyOpcodes.NOP: 0>: <ducky.cpu.instructions.NOP object>, <DuckyOpcodes.LW: 1>: <ducky.cpu.instructions.LW object>, <DuckyOpcodes.LS: 2>: <ducky.cpu.instructions.LS object>, <DuckyOpcodes.LB: 3>: <ducky.cpu.instructions.LB object>, <DuckyOpcodes.STW: 4>: <ducky.cpu.instructions.STW object>, <DuckyOpcodes.STS: 5>: <ducky.cpu.instructions.STS object>, <DuckyOpcodes.STB: 6>: <ducky.cpu.instructions.STB object>, <DuckyOpcodes.CAS: 7>: <ducky.cpu.instructions.CAS object>, <DuckyOpcodes.LA: 8>: <ducky.cpu.instructions.LA object>, <DuckyOpcodes.LI: 9>: <ducky.cpu.instructions.LI object>, <DuckyOpcodes.LIU: 10>: <ducky.cpu.instructions.LIU object>, <DuckyOpcodes.MOV: 11>: <ducky.cpu.instructions.MOV object>, <DuckyOpcodes.SWP: 12>: <ducky.cpu.instructions.SWP object>, <DuckyOpcodes.INT: 13>: <ducky.cpu.instructions.INT object>, <DuckyOpcodes.RETINT: 14>: <ducky.cpu.instructions.RETINT object>, <DuckyOpcodes.CALL: 15>: <ducky.cpu.instructions.CALL object>, <DuckyOpcodes.RET: 16>: <ducky.cpu.instructions.RET object>, <DuckyOpcodes.CLI: 17>: <ducky.cpu.instructions.CLI object>, <DuckyOpcodes.STI: 18>: <ducky.cpu.instructions.STI object>, <DuckyOpcodes.RST: 19>: <ducky.cpu.instructions.RST object>, <DuckyOpcodes.HLT: 20>: <ducky.cpu.instructions.HLT object>, <DuckyOpcodes.IDLE: 21>: <ducky.cpu.instructions.IDLE object>, <DuckyOpcodes.LPM: 22>: <ducky.cpu.instructions.LPM object>, <DuckyOpcodes.IPI: 23>: <ducky.cpu.instructions.IPI object>, <DuckyOpcodes.PUSH: 24>: <ducky.cpu.instructions.PUSH object>, <DuckyOpcodes.POP: 25>: <ducky.cpu.instructions.POP object>, <DuckyOpcodes.INC: 26>: <ducky.cpu.instructions.INC object>, <DuckyOpcodes.DEC: 27>: <ducky.cpu.instructions.DEC object>, <DuckyOpcodes.ADD: 28>: <ducky.cpu.instructions.ADD object>, <DuckyOpcodes.SUB: 29>: <ducky.cpu.instructions.SUB object>, <DuckyOpcodes.MUL: 30>: <ducky.cpu.instructions.MUL object>, <DuckyOpcodes.DIV: 31>: <ducky.cpu.instructions.DIV object>, <DuckyOpcodes.UDIV: 32>: <ducky.cpu.instructions.UDIV object>, <DuckyOpcodes.MOD: 33>: <ducky.cpu.instructions.MOD object>, <DuckyOpcodes.AND: 34>: <ducky.cpu.instructions.AND object>, <DuckyOpcodes.OR: 35>: <ducky.cpu.instructions.OR object>, <DuckyOpcodes.XOR: 36>: <ducky.cpu.instructions.XOR object>, <DuckyOpcodes.NOT: 37>: <ducky.cpu.instructions.NOT object>, <DuckyOpcodes.SHL: 38>: <ducky.cpu.instructions.SHL object>, <DuckyOpcodes.SHR: 39>: <ducky.cpu.instructions.SHR object>, <DuckyOpcodes.SHRS: 40>: <ducky.cpu.instructions.SHRS object>, <DuckyOpcodes.J: 46>: <ducky.cpu.instructions.J object>, <DuckyOpcodes.CMP: 47>: <ducky.cpu.instructions.CMP object>, <DuckyOpcodes.CMPU: 48>: <ducky.cpu.instructions.CMPU object>, <DuckyOpcodes.SET: 49>: <ducky.cpu.instructions.SETLE object>, <DuckyOpcodes.BRANCH: 50>: <ducky.cpu.instructions.BLE object>, <DuckyOpcodes.SELECT: 51>: <ducky.cpu.instructions.SELLE object>, <DuckyOpcodes.CTR: 60>: <ducky.cpu.instructions.CTR object>, <DuckyOpcodes.CTW: 61>: <ducky.cpu.instructions.CTW object>, <DuckyOpcodes.FPTC: 62>: <ducky.cpu.instructions.FPTC object>, <DuckyOpcodes.SIS: 63>: <ducky.cpu.instructions.SIS object>}¶
-
opcode_encoding_map
= {<DuckyOpcodes.NOP: 0>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.LW: 1>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.LS: 2>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.LB: 3>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.STW: 4>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.STS: 5>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.STB: 6>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.CAS: 7>: <class 'ducky.cpu.instructions.EncodingA'>, <DuckyOpcodes.LA: 8>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.LI: 9>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.LIU: 10>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.MOV: 11>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SWP: 12>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.INT: 13>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.RETINT: 14>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.CALL: 15>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.RET: 16>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.CLI: 17>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.STI: 18>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.RST: 19>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.HLT: 20>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.IDLE: 21>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.LPM: 22>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.IPI: 23>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.PUSH: 24>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.POP: 25>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.INC: 26>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.DEC: 27>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.ADD: 28>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SUB: 29>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.MUL: 30>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.DIV: 31>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.UDIV: 32>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.MOD: 33>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.AND: 34>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.OR: 35>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.XOR: 36>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.NOT: 37>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SHL: 38>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SHR: 39>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SHRS: 40>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.J: 46>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.CMP: 47>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.CMPU: 48>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SET: 49>: <class 'ducky.cpu.instructions.EncodingS'>, <DuckyOpcodes.BRANCH: 50>: <class 'ducky.cpu.instructions.EncodingC'>, <DuckyOpcodes.SELECT: 51>: <class 'ducky.cpu.instructions.EncodingS'>, <DuckyOpcodes.CTR: 60>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.CTW: 61>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.FPTC: 62>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.SIS: 63>: <class 'ducky.cpu.instructions.EncodingI'>}¶
-
opcodes
¶ alias of
DuckyOpcodes
-
-
class
ducky.cpu.instructions.
DuckyOpcodes
[source]¶ Bases:
enum.IntEnum
-
ADD
= 28¶
-
AND
= 34¶
-
BRANCH
= 50¶
-
CALL
= 15¶
-
CAS
= 7¶
-
CLI
= 17¶
-
CMP
= 47¶
-
CMPU
= 48¶
-
CTR
= 60¶
-
CTW
= 61¶
-
DEC
= 27¶
-
DIV
= 31¶
-
FPTC
= 62¶
-
HLT
= 20¶
-
IDLE
= 21¶
-
INC
= 26¶
-
INT
= 13¶
-
IPI
= 23¶
-
J
= 46¶
-
LA
= 8¶
-
LB
= 3¶
-
LI
= 9¶
-
LIU
= 10¶
-
LPM
= 22¶
-
LS
= 2¶
-
LW
= 1¶
-
MOD
= 33¶
-
MOV
= 11¶
-
MUL
= 30¶
-
NOP
= 0¶
-
NOT
= 37¶
-
OR
= 35¶
-
POP
= 25¶
-
PUSH
= 24¶
-
RET
= 16¶
-
RETINT
= 14¶
-
RST
= 19¶
-
SELECT
= 51¶
-
SET
= 49¶
-
SHL
= 38¶
-
SHR
= 39¶
-
SHRS
= 40¶
-
SIS
= 63¶
-
STB
= 6¶
-
STI
= 18¶
-
STS
= 5¶
-
STW
= 4¶
-
SUB
= 29¶
-
SWP
= 12¶
-
UDIV
= 32¶
-
XOR
= 36¶
-
_member_map_
= OrderedDict([('NOP', <DuckyOpcodes.NOP: 0>), ('LW', <DuckyOpcodes.LW: 1>), ('LS', <DuckyOpcodes.LS: 2>), ('LB', <DuckyOpcodes.LB: 3>), ('STW', <DuckyOpcodes.STW: 4>), ('STS', <DuckyOpcodes.STS: 5>), ('STB', <DuckyOpcodes.STB: 6>), ('CAS', <DuckyOpcodes.CAS: 7>), ('LA', <DuckyOpcodes.LA: 8>), ('LI', <DuckyOpcodes.LI: 9>), ('LIU', <DuckyOpcodes.LIU: 10>), ('MOV', <DuckyOpcodes.MOV: 11>), ('SWP', <DuckyOpcodes.SWP: 12>), ('INT', <DuckyOpcodes.INT: 13>), ('RETINT', <DuckyOpcodes.RETINT: 14>), ('CALL', <DuckyOpcodes.CALL: 15>), ('RET', <DuckyOpcodes.RET: 16>), ('CLI', <DuckyOpcodes.CLI: 17>), ('STI', <DuckyOpcodes.STI: 18>), ('RST', <DuckyOpcodes.RST: 19>), ('HLT', <DuckyOpcodes.HLT: 20>), ('IDLE', <DuckyOpcodes.IDLE: 21>), ('LPM', <DuckyOpcodes.LPM: 22>), ('IPI', <DuckyOpcodes.IPI: 23>), ('PUSH', <DuckyOpcodes.PUSH: 24>), ('POP', <DuckyOpcodes.POP: 25>), ('INC', <DuckyOpcodes.INC: 26>), ('DEC', <DuckyOpcodes.DEC: 27>), ('ADD', <DuckyOpcodes.ADD: 28>), ('SUB', <DuckyOpcodes.SUB: 29>), ('MUL', <DuckyOpcodes.MUL: 30>), ('DIV', <DuckyOpcodes.DIV: 31>), ('UDIV', <DuckyOpcodes.UDIV: 32>), ('MOD', <DuckyOpcodes.MOD: 33>), ('AND', <DuckyOpcodes.AND: 34>), ('OR', <DuckyOpcodes.OR: 35>), ('XOR', <DuckyOpcodes.XOR: 36>), ('NOT', <DuckyOpcodes.NOT: 37>), ('SHL', <DuckyOpcodes.SHL: 38>), ('SHR', <DuckyOpcodes.SHR: 39>), ('SHRS', <DuckyOpcodes.SHRS: 40>), ('J', <DuckyOpcodes.J: 46>), ('CMP', <DuckyOpcodes.CMP: 47>), ('CMPU', <DuckyOpcodes.CMPU: 48>), ('SET', <DuckyOpcodes.SET: 49>), ('BRANCH', <DuckyOpcodes.BRANCH: 50>), ('SELECT', <DuckyOpcodes.SELECT: 51>), ('CTR', <DuckyOpcodes.CTR: 60>), ('CTW', <DuckyOpcodes.CTW: 61>), ('FPTC', <DuckyOpcodes.FPTC: 62>), ('SIS', <DuckyOpcodes.SIS: 63>)])¶
-
_member_names_
= ['NOP', 'LW', 'LS', 'LB', 'STW', 'STS', 'STB', 'CAS', 'LA', 'LI', 'LIU', 'MOV', 'SWP', 'INT', 'RETINT', 'CALL', 'RET', 'CLI', 'STI', 'RST', 'HLT', 'IDLE', 'LPM', 'IPI', 'PUSH', 'POP', 'INC', 'DEC', 'ADD', 'SUB', 'MUL', 'DIV', 'UDIV', 'MOD', 'AND', 'OR', 'XOR', 'NOT', 'SHL', 'SHR', 'SHRS', 'J', 'CMP', 'CMPU', 'SET', 'BRANCH', 'SELECT', 'CTR', 'CTW', 'FPTC', 'SIS']¶
-
_member_type_
¶ alias of
int
-
_value2member_map_
= {0: <DuckyOpcodes.NOP: 0>, 1: <DuckyOpcodes.LW: 1>, 2: <DuckyOpcodes.LS: 2>, 3: <DuckyOpcodes.LB: 3>, 4: <DuckyOpcodes.STW: 4>, 5: <DuckyOpcodes.STS: 5>, 6: <DuckyOpcodes.STB: 6>, 7: <DuckyOpcodes.CAS: 7>, 8: <DuckyOpcodes.LA: 8>, 9: <DuckyOpcodes.LI: 9>, 10: <DuckyOpcodes.LIU: 10>, 11: <DuckyOpcodes.MOV: 11>, 12: <DuckyOpcodes.SWP: 12>, 13: <DuckyOpcodes.INT: 13>, 14: <DuckyOpcodes.RETINT: 14>, 15: <DuckyOpcodes.CALL: 15>, 16: <DuckyOpcodes.RET: 16>, 17: <DuckyOpcodes.CLI: 17>, 18: <DuckyOpcodes.STI: 18>, 19: <DuckyOpcodes.RST: 19>, 20: <DuckyOpcodes.HLT: 20>, 21: <DuckyOpcodes.IDLE: 21>, 22: <DuckyOpcodes.LPM: 22>, 23: <DuckyOpcodes.IPI: 23>, 24: <DuckyOpcodes.PUSH: 24>, 25: <DuckyOpcodes.POP: 25>, 26: <DuckyOpcodes.INC: 26>, 27: <DuckyOpcodes.DEC: 27>, 28: <DuckyOpcodes.ADD: 28>, 29: <DuckyOpcodes.SUB: 29>, 30: <DuckyOpcodes.MUL: 30>, 31: <DuckyOpcodes.DIV: 31>, 32: <DuckyOpcodes.UDIV: 32>, 33: <DuckyOpcodes.MOD: 33>, 34: <DuckyOpcodes.AND: 34>, 35: <DuckyOpcodes.OR: 35>, 36: <DuckyOpcodes.XOR: 36>, 37: <DuckyOpcodes.NOT: 37>, 38: <DuckyOpcodes.SHL: 38>, 39: <DuckyOpcodes.SHR: 39>, 40: <DuckyOpcodes.SHRS: 40>, 46: <DuckyOpcodes.J: 46>, 47: <DuckyOpcodes.CMP: 47>, 48: <DuckyOpcodes.CMPU: 48>, 49: <DuckyOpcodes.SET: 49>, 50: <DuckyOpcodes.BRANCH: 50>, 51: <DuckyOpcodes.SELECT: 51>, 60: <DuckyOpcodes.CTR: 60>, 61: <DuckyOpcodes.CTW: 61>, 62: <DuckyOpcodes.FPTC: 62>, 63: <DuckyOpcodes.SIS: 63>}¶
-
-
class
ducky.cpu.instructions.
EncodingA
[source]¶ Bases:
_ctypes.Structure
-
_fields_
= [('opcode', <class 'ctypes.c_uint'>, 6), ('reg1', <class 'ctypes.c_uint'>, 5), ('reg2', <class 'ctypes.c_uint'>, 5), ('reg3', <class 'ctypes.c_uint'>, 5)]¶
-
_pack_
= 0¶
-
opcode
¶ Structure/Union member
-
reg1
¶ Structure/Union member
-
reg2
¶ Structure/Union member
-
reg3
¶ Structure/Union member
-
-
class
ducky.cpu.instructions.
EncodingC
[source]¶ Bases:
_ctypes.Structure
-
_fields_
= [('opcode', <class 'ctypes.c_uint'>, 6), ('reg', <class 'ctypes.c_uint'>, 5), ('flag', <class 'ctypes.c_uint'>, 3), ('value', <class 'ctypes.c_uint'>, 1), ('immediate_flag', <class 'ctypes.c_uint'>, 1), ('immediate', <class 'ctypes.c_uint'>, 16)]¶
-
_pack_
= 0¶
-
flag
¶ Structure/Union member
-
immediate
¶ Structure/Union member
-
immediate_flag
¶ Structure/Union member
-
opcode
¶ Structure/Union member
-
reg
¶ Structure/Union member
-
value
¶ Structure/Union member
-
-
class
ducky.cpu.instructions.
EncodingContext
(logger)[source]¶ Bases:
ducky.util.LoggingCapable
,object
-
class
ducky.cpu.instructions.
EncodingI
[source]¶ Bases:
_ctypes.Structure
-
_fields_
= [('opcode', <class 'ctypes.c_uint'>, 6), ('reg', <class 'ctypes.c_uint'>, 5), ('immediate_flag', <class 'ctypes.c_uint'>, 1), ('immediate', <class 'ctypes.c_uint'>, 20)]¶
-
_pack_
= 0¶
-
immediate
¶ Structure/Union member
-
immediate_flag
¶ Structure/Union member
-
opcode
¶ Structure/Union member
-
reg
¶ Structure/Union member
-
-
class
ducky.cpu.instructions.
EncodingR
[source]¶ Bases:
_ctypes.Structure
-
_fields_
= [('opcode', <class 'ctypes.c_uint'>, 6), ('reg1', <class 'ctypes.c_uint'>, 5), ('reg2', <class 'ctypes.c_uint'>, 5), ('immediate_flag', <class 'ctypes.c_uint'>, 1), ('immediate', <class 'ctypes.c_uint'>, 15)]¶
-
_pack_
= 0¶
-
immediate
¶ Structure/Union member
-
immediate_flag
¶ Structure/Union member
-
opcode
¶ Structure/Union member
-
reg1
¶ Structure/Union member
-
reg2
¶ Structure/Union member
-
-
class
ducky.cpu.instructions.
EncodingS
[source]¶ Bases:
_ctypes.Structure
-
_fields_
= [('opcode', <class 'ctypes.c_uint'>, 6), ('reg1', <class 'ctypes.c_uint'>, 5), ('reg2', <class 'ctypes.c_uint'>, 5), ('flag', <class 'ctypes.c_uint'>, 3), ('value', <class 'ctypes.c_uint'>, 1), ('immediate_flag', <class 'ctypes.c_uint'>, 1), ('immediate', <class 'ctypes.c_uint'>, 11)]¶
-
_pack_
= 0¶
-
flag
¶ Structure/Union member
-
immediate
¶ Structure/Union member
-
immediate_flag
¶ Structure/Union member
-
opcode
¶ Structure/Union member
-
reg1
¶ Structure/Union member
-
reg2
¶ Structure/Union member
-
value
¶ Structure/Union member
-
-
class
ducky.cpu.instructions.
FPTC
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'fptc'¶
-
opcode
= 62¶
-
operands
= []¶
-
-
class
ducky.cpu.instructions.
HLT
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_RI
-
mnemonic
= 'hlt'¶
-
opcode
= 20¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
IDLE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'idle'¶
-
opcode
= 21¶
-
operands
= []¶
-
-
class
ducky.cpu.instructions.
INC
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R
-
mnemonic
= 'inc'¶
-
opcode
= 26¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
INT
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_RI
-
mnemonic
= 'int'¶
-
opcode
= 13¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
IPI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_RI
-
mnemonic
= 'ipi'¶
-
opcode
= 23¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
InstructionSet
[source]¶ Bases:
object
-
instruction_set_id
= None¶
-
instructions
= []¶
-
opcodes
= None¶
-
-
class
ducky.cpu.instructions.
J
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._JUMP
-
mnemonic
= 'j'¶
-
opcode
= 46¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
LA
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD_IMM
-
mnemonic
= 'la'¶
-
opcode
= 8¶
-
operands
= ['r', 'i']¶
-
relative_address
= True¶
-
-
class
ducky.cpu.instructions.
LB
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD
-
mnemonic
= 'lb'¶
-
opcode
= 3¶
-
operands
= ['r', 'a']¶
-
-
class
ducky.cpu.instructions.
LI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD_IMM
-
mnemonic
= 'li'¶
-
opcode
= 9¶
-
operands
= ['r', 'i']¶
-
-
class
ducky.cpu.instructions.
LIU
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD_IMM
-
mnemonic
= 'liu'¶
-
opcode
= 10¶
-
operands
= ['r', 'i']¶
-
-
class
ducky.cpu.instructions.
LPM
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'lpm'¶
-
opcode
= 22¶
-
operands
= []¶
-
-
class
ducky.cpu.instructions.
LS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD
-
mnemonic
= 'ls'¶
-
opcode
= 2¶
-
operands
= ['r', 'a']¶
-
-
class
ducky.cpu.instructions.
LW
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD
-
mnemonic
= 'lw'¶
-
opcode
= 1¶
-
operands
= ['r', 'a']¶
-
-
class
ducky.cpu.instructions.
MOD
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'mod'¶
-
opcode
= 33¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
MOV
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_R
-
mnemonic
= 'mov'¶
-
opcode
= 11¶
-
operands
= ['r', 'r']¶
-
-
class
ducky.cpu.instructions.
MUL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'mul'¶
-
opcode
= 30¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
NOP
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'nop'¶
-
opcode
= 0¶
-
operands
= []¶
-
-
class
ducky.cpu.instructions.
NOT
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R
-
mnemonic
= 'not'¶
-
opcode
= 37¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
OR
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'or'¶
-
opcode
= 35¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
POP
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R
-
mnemonic
= 'pop'¶
-
opcode
= 25¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
PUSH
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_RI
-
mnemonic
= 'push'¶
-
opcode
= 24¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
RET
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'ret'¶
-
opcode
= 16¶
-
operands
= []¶
-
-
class
ducky.cpu.instructions.
RETINT
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'retint'¶
-
opcode
= 14¶
-
operands
= []¶
-
-
class
ducky.cpu.instructions.
RST
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'rst'¶
-
opcode
= 19¶
-
operands
= []¶
-
-
class
ducky.cpu.instructions.
SELE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'sele'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELG
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'selg'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELGE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'selge'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'sell'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELLE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'selle'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELNE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'selne'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELNO
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'selno'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELNS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'selns'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELNZ
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'selnz'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELO
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'selo'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'sels'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SELZ
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SELECT
-
mnemonic
= 'selz'¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SETE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'sete'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETG
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setg'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETGE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setge'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setl'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETLE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setle'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETNE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setne'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETNO
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setno'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETNS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setns'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETNZ
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setnz'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETO
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'seto'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'sets'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SETZ
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setz'¶
-
operands
= ['r']¶
-
-
class
ducky.cpu.instructions.
SHL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'shiftl'¶
-
opcode
= 38¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SHR
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'shiftr'¶
-
opcode
= 39¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SHRS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'shiftrs'¶
-
opcode
= 40¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SIS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_RI
-
mnemonic
= 'sis'¶
-
opcode
= 63¶
-
operands
= ['ri']¶
-
-
class
ducky.cpu.instructions.
STB
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._STORE
-
mnemonic
= 'stb'¶
-
opcode
= 6¶
-
operands
= ['a', 'r']¶
-
-
class
ducky.cpu.instructions.
STI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'sti'¶
-
opcode
= 18¶
-
operands
= []¶
-
-
class
ducky.cpu.instructions.
STS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._STORE
-
mnemonic
= 'sts'¶
-
opcode
= 5¶
-
operands
= ['a', 'r']¶
-
-
class
ducky.cpu.instructions.
STW
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._STORE
-
mnemonic
= 'stw'¶
-
opcode
= 4¶
-
operands
= ['a', 'r']¶
-
-
class
ducky.cpu.instructions.
SUB
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'sub'¶
-
opcode
= 29¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
SWP
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_R
-
mnemonic
= 'swp'¶
-
opcode
= 12¶
-
operands
= ['r', 'r']¶
-
-
class
ducky.cpu.instructions.
UDIV
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'udiv'¶
-
opcode
= 32¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
XOR
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'xor'¶
-
opcode
= 36¶
-
operands
= ['r', 'ri']¶
-
-
class
ducky.cpu.instructions.
_BRANCH
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._COND
-
inst_aligned
= True¶
-
opcode
= 50¶
-
operands
= 'ri'¶
-
relative_address
= True¶
-
-
class
ducky.cpu.instructions.
_CMP
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_RI
-
static
evaluate
(core, x, y, signed=True)[source]¶ Compare two numbers, and update relevant flags. Signed comparison is used unless
signed
isFalse
. All arithmetic flags are set to zero before the relevant ones are set.O
flag is reset like the others, therefore caller has to take care of it’s setting if it’s required to set it.Parameters: - x (u32) – left hand number
- y (u32) – right hand number
- signed (bool) – use signed, defaults to
True
-
static
-
class
ducky.cpu.instructions.
_COND
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
FLAGS
= ['arith_equal', 'arith_zero', 'arith_overflow', 'arith_sign', 'l', 'g']¶
-
GFLAGS
= [0, 1, 2, 3]¶
-
MNEMONICS
= ['e', 'z', 'o', 's', 'g', 'l']¶
-
-
class
ducky.cpu.instructions.
_JUMP
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
inst_aligned
= True¶
-
operands
= 'ri'¶
-
relative_address
= True¶
-
-
class
ducky.cpu.instructions.
_LOAD
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'r,a'¶
-
-
class
ducky.cpu.instructions.
_SELECT
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
opcode
= 51¶
-
operands
= 'r,ri'¶
-
-
class
ducky.cpu.instructions.
_SET
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._COND
-
opcode
= 49¶
-
operands
= 'r'¶
-
-
class
ducky.cpu.instructions.
_STORE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'a,r'¶
-
-
ducky.cpu.instructions.
update_arith_flags
(core, reg)[source]¶ Set relevant arithmetic flags according to content of registers. Flags are set to zero at the beginning, then content of each register is examined, and
S
andZ
flags are set.E
flag is not touched,O
flag is set to zero.Parameters: reg (u32_t) – register