sporniket / isa68k-database

The Instruction Set Architecture (ISA) of a family of CPU from the 1980-2000 years known as "Motorola 68k", described by several relationnal database tables stored in a open format (tabulation separated values, TSV).
Creative Commons Zero v1.0 Universal
0 stars 0 forks source link

[script] line comprehension for Integer Instruction #7

Open sporniket opened 1 week ago

sporniket commented 1 week ago

WIP

There are columns that are standalones :

There are columns that are to be simply grouped :

And there are operand specifications

sporniket commented 1 week ago

Technical details

Authorized operand sizes

class SpecsOfAuthorizedStorageWidthForIntegerOperands:
  enableBytes = True
  enableWords = True
  enableLongs = True

Operand specification

enum AddressingModeAuthorization:
  NO = 0
  YES = 1
  YES_WITH_RULES = 2

class SpecsOfAddressingMode:
  authorized = AddressingModeAuthorization::NO
  rules = []

class SpecsOfIntegerOperand:
  isEffectiveAddress = True
  Data Register Direct Mode = SpecsOfAddressingMode(...)
  Address Register Direct Mode = SpecsOfAddressingMode(...)
  Address Register Indirect Mode = SpecsOfAddressingMode(...)
  Address Register Indirect with Postincrement Mode = SpecsOfAddressingMode(...)
  Address Register Indirect with Predecrement Mode = SpecsOfAddressingMode(...)
  Address Register Indirect with Displacement Mode = SpecsOfAddressingMode(...)
  Address Register Indirect with Index (8-Bit Displacement) Mode = SpecsOfAddressingMode(...)
  Address Register Indirect with Index (Base Displacement) Mode = SpecsOfAddressingMode(...)
  Memory Indirect Postindexed Mode = SpecsOfAddressingMode(...)
  Memory Indirect Preindexed Mode = SpecsOfAddressingMode(...)
  Program Counter Indirect with Displacement Mode = SpecsOfAddressingMode(...)
  Program Counter Indirect with Index (8-Bit Displacement) Mode = SpecsOfAddressingMode(...)
  Program Counter Indirect with Index (Base Displacement) Mode = SpecsOfAddressingMode(...)
  Program Counter Memory Indirect Postindexed Mode = SpecsOfAddressingMode(...)
  Program Counter Memory Indirect Preindexed Mode = SpecsOfAddressingMode(...)
  Absolute Short Addressing Mode = SpecsOfAddressingMode(...)
  Absolute Long Addressing Mode = SpecsOfAddressingMode(...)
  Immediate Data = SpecsOfAddressingMode(...)
  Signed value = SpecsOfAddressingMode(...)

Database line model

class SpecsOfIntegerInstruction:
  # simple properties
  RowId = 0
  Mnemonics = ""
  Synopsys = ""
  Opcode = ""
  Domain = ""
  numberOfOperands = 0
  BriefDescription = ""
  # simple groupes
  operandSizes = SpecsOfAuthorizedStorageWidthForIntegerOperands(...)
  supplementalWords = []
  # operands
  operands = [
    # as required by numberOfOperands
    SpecsOfIntegerOperand(...),
    SpecsOfIntegerOperand(...),
    SpecsOfIntegerOperand(...)
  ]