Skip to content
Snippets Groups Projects
decoder-configuration.k 7.39 KiB
requires "x86-mint-wrapper.k"
requires "registers.k"
requires "categories.k"
requires "inum-extractor-configuration.k"

module DECODER-INTERFACE
  imports DOMAINS
  imports MINT-WRAPPER-SYNTAX
 
  syntax Instruction ::= "$FakeInstruction"
 
  syntax K ::= Decode(Int, Ints)

  syntax DecoderError
                               //Len, DisassemblyString, x86-Semantics Instruction Inum
  syntax DecoderResult ::= DecodedInstruction(Int, String, Instruction, Int) | DecoderError
endmodule

module DECODER-CONFIGURATION
  imports DOMAINS
  imports REGISTERS-SYNTAX
  imports DECODER-INTERFACE
  imports CATEGORIES-SYNTAX
  imports INUM-EXTRACTOR-CONFIG

  syntax Modes ::= "mode64" | "mode32" | "mode16"
  syntax K ::= "ResetDecoder"

  syntax IClass ::= "INVALID_ICLASS"

  configuration <decoder>
                    <inumExtractor/>
                    <decmode> mode64 </decmode>
                    <smode> mode64 </smode>
                    <instructionpointer> 0 </instructionpointer>

                    <decoderInternal>
                        <decoderBuffer> .Ints </decoderBuffer>
                        <ilen> 0 </ilen>
                        <dynamicDecoderBuffer> .Ints </dynamicDecoderBuffer>
                        <decoderOriginalBuffer> .Ints </decoderOriginalBuffer>
                        <prefixes> .Set </prefixes>                    
                        <suffix> "" </suffix>
                        <disassemblerOut> "" </disassemblerOut>
                        <decodedInstruction> $FakeInstruction </decodedInstruction>
                        <ATTRIBUTES> .List </ATTRIBUTES>
                        <OPERANDS> .List </OPERANDS>
                        <CATEGORY> "CATEGORY_NO_CATEGORY" </CATEGORY> 
                        <INUM> 0 </INUM>
                        <INAME> "" </INAME>
                        <SEGOVD> 0 </SEGOVD>
                        <HINT> 0 </HINT>
                        <LOCK> 0 </LOCK>
                        <NEEDMEMDISP> 0 </NEEDMEMDISP>
                        <DISP> 0 </DISP>
                        <DISPWIDTH> 0 </DISPWIDTH>
                        <BRDISPWIDTH> 0 </BRDISPWIDTH>
                        <DF32> 0 </DF32>
                        <DF64> 0 </DF64>
                        <NOREX> 0 </NOREX>
                        <NEEDREX> 0 </NEEDREX>
                        <SKIPOSZ> 0 </SKIPOSZ>
                        <REX> 0 </REX>
                        <REXW> 0 </REXW>
                        <REXR> 0 </REXR>
                        <REXX> 0 </REXX>
                        <REXB> 0 </REXB>
                        <REP> 0 </REP>
                        <OSZ> 0 </OSZ>
                        <PREFIX66> 0 </PREFIX66>
                        <ASZ> 0 </ASZ>
                        <EOSZ> 0 </EOSZ>
                        <EASZ> 0 </EASZ>
                        <MOD> 0 </MOD>
                        <REG> 0 </REG>
                        <SRM> 0 </SRM>
                        <RM> 0 </RM>
                        <REALMODE> 0 </REALMODE>
                        <MODE> 0 </MODE>
                        <SMODE> 0 </SMODE>
                        <MODEP5> 0 </MODEP5>
                        <MODEP55C> 0 </MODEP55C>
                        <P4> 0 </P4>
                        <LZCNT> 1 </LZCNT>
                        <TZCNT> 1 </TZCNT>
                        <MODEFIRSTPREFIX> 0 </MODEFIRSTPREFIX>
                        <IMM0> 0 </IMM0>
                        <IMM1> 0 </IMM1>
                        <IMM0SIGNED> 0 </IMM0SIGNED>
                        <UIMM0> 0 </UIMM0>
                        <UIMM1> 0 </UIMM1>
                        <IMMWIDTH> 0 </IMMWIDTH>
                        <HASIMM1> 0 </HASIMM1>
                        <USINGDEFAULTSEGMENT0> 0 </USINGDEFAULTSEGMENT0>
                        <USINGDEFAULTSEGMENT1> 0 </USINGDEFAULTSEGMENT1>
                        <DEFAULTSEG> 0 </DEFAULTSEG>
                        <SEG0> REG_INVALID </SEG0>
                        <BASE0> REG_INVALID </BASE0>
                        <INDEX> REG_INVALID </INDEX>
                        <SCALE> 0 </SCALE>
                        <SIB> 0 </SIB>
                        <SIBSCALE> 0 </SIBSCALE>
                        <SIBBASE> 0 </SIBBASE>
                        <SIBINDEX> 0 </SIBINDEX>
                        <SEG1> REG_INVALID </SEG1>
                        <BASE1> REG_INVALID </BASE1>
                        <MEM0> 0 </MEM0>
                        <MEM1> 0 </MEM1>
                        <MEMWIDTH> 0 </MEMWIDTH>
                        <AGEN> 0 </AGEN>
                        <RELBR> 0 </RELBR>
                        <PTR> 0 </PTR>
                        <REG0> REG_INVALID </REG0>
                        <REG1> REG_INVALID </REG1>
                        <REG2> REG_INVALID </REG2>
                        <REG3> REG_INVALID </REG3>
                        <REG4> REG_INVALID </REG4>
                        <REG5> REG_INVALID </REG5>
                        <REG6> REG_INVALID </REG6>
                        <REG7> REG_INVALID </REG7>
                        <REG8> REG_INVALID </REG8>
                        <OUTREG> REG_INVALID </OUTREG>
                        <ENCODERPREFERRED> 0 </ENCODERPREFERRED>
                        <ICLASS> INVALID_ICLASS </ICLASS>
                        <NELEM> 0 </NELEM>
                        <ELEMENTSIZE> 0 </ELEMENTSIZE>
                        <MAP> 0 </MAP>
                        <AMD3DNOW> 0 </AMD3DNOW>
                        <FIRSTF2F3> 0 </FIRSTF2F3>
                        <LASTF2F3> 0 </LASTF2F3>
                        <ILDF2> 0 </ILDF2>
                        <ILDF3> 0 </ILDF3>
                        <MAXBYTES> 0 </MAXBYTES>
                        <ILDSEG> 0 </ILDSEG>
                        <NSEGPREFIXES> 0 </NSEGPREFIXES>
                        <NREXES> 0 </NREXES>
                        <NPREFIXES> 0 </NPREFIXES>
                        <NOMINALOPCODE> 0 </NOMINALOPCODE>
                        <POSNOMINALOPCODE> 0 </POSNOMINALOPCODE>
                        <HASMODRM> 0 </HASMODRM>
                        <HASSIB> 0 </HASSIB>
                        <POSMODRM> 0 </POSMODRM>
                        <POSSIB> 0 </POSSIB>
                        <POSDISP> 0 </POSDISP>
                        <POSIMM> 0 </POSIMM>
                        <POSIMM1> 0 </POSIMM1>
                        <IMM1BYTES> 0 </IMM1BYTES>
                        <MODRMBYTE> 0 </MODRMBYTE>
                        <ESRC> 0 </ESRC>
                        <VEXVALID> 0 </VEXVALID>
                        <DUMMY> 0 </DUMMY>
                        <MPXMODE> 0 </MPXMODE>
                        <CET> 0 </CET>
                        <CLDEMOTE> 0 </CLDEMOTE>
                        <VEXDEST3> 0 </VEXDEST3>
                        <VEXDEST210> 0 </VEXDEST210>
                        <VL> 0 </VL>
                        <VEXPREFIX> 0 </VEXPREFIX>
                        <VEXC4> 0 </VEXC4>
                        <BCAST> 0 </BCAST>
                        <ZEROING> 0 </ZEROING>
                        <LLRC> 0 </LLRC>
                        <BCRC> 0 </BCRC>
                        <REXRR> 0 </REXRR>
                        <VEXDEST4> 0 </VEXDEST4>
                        <MASK> 0 </MASK>
                        <ROUNDC> 0 </ROUNDC>
                        <SAE> 0 </SAE>
                        <NOSCALEDISP8> 0 </NOSCALEDISP8>
                        <UBIT> 0 </UBIT>
                        <WBNOINVD> 0 </WBNOINVD>

                    </decoderInternal>
                  </decoder>
endmodule