Changeset 50


Ignore:
Timestamp:
Sep 9, 2010, 2:52:08 PM (8 years ago)
Author:
mulligan
Message:

More missing cases added to the ASMInterpret functions. Pretty printer
finished.

Location:
Deliverables/D4.1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Deliverables/D4.1/ASMInterpret.ml

    r49 r50  
    320320       let pc,b1 = next pc in
    321321         SJMP (`REL b1), pc, 2
     322   | (true,false,false,true),(true,r1,r2,r3) ->
     323       SUBB (`A, `REG(r1,r2,r3)), pc, 1
    322324   | (true,false,false,true),(false,true,false,true) ->
    323325       let pc,b1 = next pc in
     
    554556  | SJMP (`REL b1) ->
    555557    [(true,false,false,false),(false,false,false,false); b1]
     558  | SUBB (`A, `REG(r1,r2,r3)) ->
     559    [(true,false,false,true),(true,r1,r2,r3)]
    556560  | SUBB (`A, `DIRECT b1) ->
    557561    [(true,false,false,true),(false,true,false,true); b1]
  • Deliverables/D4.1/Pretty.ml

    r49 r50  
    7171  | CLR (`BIT b1) ->
    7272    "CLR bit (" ^ pretty_byte b1 ^ ")"
    73 (*
    7473  | DA `A ->
    75     [(true,true,false,true),(false,true,false,false)]
     74    "DA A"
    7675  | DEC `A ->
    77     [(false,false,false,true),(false,true,false,false)]
     76    "DEC A"
    7877  | DEC (`REG(r1,r2,r3)) ->
    79     [(false,false,false,true),(true,r1,r2,r3)]
     78    "DEC Rn"
    8079  | DEC (`DIRECT b1) ->
    81     [(false,false,false,true),(false,true,false,true); b1]
     80    "DEC direct (" ^ pretty_byte b1 ^ ")"
    8281  | DEC (`INDIRECT i1) ->
    83     [(false,false,false,true),(false,true,true,i1)]
     82    "DEC @Ri (" ^ pretty_bit i1 ^ ")"
    8483  | DIV (`A, `B) ->
    85     [(true,false,false,false),(false,true,false,false)]
     84    "DIV A B"
    8685  | DJNZ (`REG(r1,r2,r3), `REL b1) ->
    87     [(true,true,false,true),(true,r1,r2,r3); b1]
     86    "DJNZ Rn rel (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ pretty_byte b1 ^ ")"
    8887  | DJNZ (`DIRECT b1, `REL b2) ->
    89     [(true,true,false,true),(false,true,false,true); b1; b2]
     88    "DJNZ direct rel (" ^ pretty_byte b1 ^ pretty_byte b2 ^ ")"
    9089  | INC `A ->
    91     [(false,false,false,false),(false,true,false,false)]
     90    "INC A"
    9291  | INC (`REG(r1,r2,r3)) ->
    93     [(false,false,false,false),(true,r1,r2,r3)]
     92    "INC Rn (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ ")"
    9493  | INC (`DIRECT b1) ->
    95     [(false,false,false,false),(false,true,false,true); b1]
     94    "INC direct (" ^ pretty_byte b1 ^ ")"
    9695  | INC (`INDIRECT i1) ->
    97     [(false,false,false,false),(false,true,true,i1)]
     96    "INC @Ri (" ^ pretty_bit i1 ^ ")"
    9897  | INC `DPTR ->
    99     [(true,false,true,false),(false,false,true,true)]
     98    "INC DPTR"
    10099  | JB (`BIT b1, `REL b2) ->
    101     [(false,false,true,false),(false,false,false,false); byte_of_byte7 b1; b2]
     100    "JB bit rel (" ^ pretty_byte b1 ^ pretty_byte b2 ^ ")"
    102101  | JBC (`BIT b1, `REL b2) ->
    103     [(false,false,false,true),(false,false,false,false); byte_of_byte7 b1; b2]
     102    "JBC bit rel (" ^ pretty_byte b1 ^ pretty_byte b2 ^ ")"
    104103  | JC (`REL b1) ->
    105     [(false,true,false,false),(false,false,false,false); b1]
     104    "JC rel (" ^ pretty_byte b1 ^ ")"
    106105  | JMP `IND_DPTR ->
    107     [(false,true,true,true),(false,false,true,true)]
     106    "JMP @A + DPTR"
    108107  | JNB (`BIT b1, `REL b2) ->
    109     [(false,false,true,true),(false,false,false,false); byte_of_byte7 b1; b2]
     108    "JNB bit rel (" ^ pretty_byte b1 ^ pretty_byte b2 ^ ")"
    110109  | JNC (`REL b1) ->
    111     [(false,true,false,true),(false,false,false,false); b1]
     110    "JNC rel (" ^ pretty_byte b1 ^ ")"
    112111  | JNZ (`REL b1) ->
    113     [(false,true,true,true),(false,false,false,false); b1]
     112    "JNZ rel (" ^ pretty_byte b1 ^ ")"
    114113  | JZ (`REL b1) ->
    115     [(false,true,true,false),(false,false,false,false); b1]
     114    "JZ rel (" ^ pretty_byte b1 ^ ")"
    116115  | LCALL (`ADDR16 (b1,b2)) ->
    117     [(false,false,false,true),(false,false,true,false); b1; b2]
     116    "LCALL addr16 (" ^ pretty_byte b1 ^ pretty_byte b2 ^ ")"
    118117  | LJMP (`ADDR16 (b1,b2)) ->
    119     [(false,false,false,false),(false,false,true,false); b1; b2]
     118    "LJMP addr16 (" ^ pretty_byte b1 ^ pretty_byte b2 ^ ")"
    120119  | MOV (`U1 (`A, `REG(r1,r2,r3))) ->
    121     [(true,true,true,false),(true,r1,r2,r3)]
     120    "MOV A Rn (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ ")"
    122121  | MOV (`U1 (`A, `DIRECT b1)) ->
    123     [(true,true,true,false),(false,true,false,true); b1]
     122    "MOV A direct (" ^ pretty_byte b1 ^ ")"
    124123  | MOV (`U1 (`A, `INDIRECT i1)) ->
    125     [(true,true,true,false),(false,true,true,i1)]
     124    "MOV A @Ri (" ^ pretty_bit i1 ^ ")"
    126125  | MOV (`U1 (`A, `DATA b1)) ->
    127     [(false,true,true,true),(false,true,false,false); b1]
     126    "MOV A #data (" ^ pretty_byte b1 ^ ")"
    128127  | MOV (`U2 (`REG(r1,r2,r3), `A)) ->
    129     [(true,true,true,true),(true,r1,r2,r3)]
     128    "MOV Rn A (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ ")"
    130129  | MOV (`U2 (`REG(r1,r2,r3), (`DIRECT b1))) ->
    131     [(true,false,true,false),(true,r1,r2,r3); b1]
     130    "MOV Rn direct (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ ")"
    132131  | MOV (`U2 (`REG(r1,r2,r3), (`DATA b1))) ->
    133     [(false,true,true,true),(true,r1,r2,r3); b1]
     132    "MOV Rn #data (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ ")"
    134133  | MOV (`U3 (`DIRECT b1, `A)) ->
    135     [(true,true,true,true),(false,true,false,true); b1]
     134    "MOV direct A (" ^ pretty_byte b1 ^ ")"
    136135  | MOV (`U3 (`DIRECT b1, `REG(r1,r2,r3))) ->
    137     [(true,false,false,false),(true,r1,r2,r3); b1]
     136    "MOV direct Rn (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ ")"
    138137  | MOV (`U3 (`DIRECT b1, `DIRECT b2)) ->
    139     [(true,false,false,false),(false,true,false,true); b1; b2]
     138    "MOV direct direct (" ^ pretty_byte b1 ^ pretty_byte b2 ^ ")"
    140139  | MOV (`U3 (`DIRECT b1, `INDIRECT i1)) ->
    141     [(true,false,false,false),(false,true,true,i1); b1]
     140    "MOV direct @Ri (" ^ pretty_byte b1 ^ pretty_bit i1 ^ ")"
    142141  | MOV (`U3 (`DIRECT b1, `DATA b2)) ->
    143     [(false,true,true,true),(false,true,false,true); b1; b2]
     142    "MOV direct #data (" ^ pretty_byte b1 ^ pretty_byte b2 ^ ")"
    144143  | MOV (`U2 (`INDIRECT i1, `A)) ->
    145     [(true,true,true,true),(false,true,true,i1)]
     144    "MOV @Ri A (" ^ pretty_bit i1 ^ ")"
    146145  | MOV (`U2 (`INDIRECT i1, `DIRECT b1)) ->
    147     [(true,false,true,false),(false,true,true,i1); b1]
     146    "MOV @Ri direct (" ^ pretty_bit i1 ^ pretty_byte b1 ^ ")"
    148147  | MOV (`U2 (`INDIRECT i1, `DATA b1)) ->
    149     [(false,true,true,true),(false,true,true,i1); b1]
     148    "MOV @Ri #data (" ^ pretty_bit i1 ^ pretty_byte b1 ^ ")"
    150149  | MOV (`U5 (`C, `BIT b1)) ->
    151     [(true,false,true,false),(false,false,true,false); byte_of_byte7 b1]
     150    "MOV C bit (" ^ pretty_byte b1 ^ ")"
    152151  | MOV (`U6 (`BIT b1, `C)) ->
    153     [(true,false,false,true),(false,false,true,false); byte_of_byte7 b1]
     152    "MOV bit C (" ^ pretty_byte b1 ^ ")"
    154153  | MOV (`U4 (`DPTR, `DATA16(b1,b2))) ->
    155     [(true,false,false,true),(false,false,false,false); b1; b2]
     154    "MOV DPTR #data16 (" ^ pretty_byte b1 ^ pretty_byte b2 ^ ")"
    156155  | MOVC (`A, `A_DPTR) ->
    157     [(true,false,false,true),(false,false,true,true)]
     156    "MOVC A @A + DPTR"
    158157  | MOVC (`A, `A_PC) ->
    159     [(true,false,false,false),(false,false,true,true)]
    160   | MOVX (`U1 (`A, `INDIRECT i1)) ->
    161     [(true,true,true,false),(false,false,true,i1)]
    162   | MOVX (`U1 (`A, `IND_DPTR)) ->
    163     [(true,true,true,false),(false,false,false,false)]
    164   | MOVX (`U2 (`INDIRECT i1, `A)) ->
    165     [(true,true,true,true),(false,false,true,i1)]
    166   | MOVX (`U2 (`IND_DPTR, `A)) ->
    167     [(true,true,true,true),(false,false,false,false)]
     158    "MOVC A @A + PC"
     159  | MOVX (`U1 (`A, `EXT_INDIRECT i1)) ->
     160    "MOVX A @Ri (" ^ pretty_bit i1 ^ ")"
     161  | MOVX (`U1 (`A, `EXT_IND_DPTR)) ->
     162    "MOVX A @DPTR"
     163  | MOVX (`U2 (`EXT_INDIRECT i1, `A)) ->
     164    "MOVX @Ri A ( " ^ pretty_bit i1 ^ ")"
     165  | MOVX (`U2 (`EXT_IND_DPTR, `A)) ->
     166    "MOVX @DPTR A"
    168167  | MUL(`A, `B) ->
    169     [(true,false,true,false),(false,true,false,false)]
     168    "MUL A B"
    170169  | NOP ->
    171     [(false,false,false,false),(false,false,false,false)]
     170    "NOP"
    172171  | ORL (`U1(`A, `REG(r1,r2,r3))) ->
    173     [(false,true,false,false),(true,r1,r2,r3)]
     172    "ORL A Rn (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ ")"
    174173  | ORL (`U1(`A, `DIRECT b1)) ->
    175     [(false,true,false,false),(false,true,false,true); b1]
     174    "ORL A direct (" ^ pretty_byte b1 ^ ")"
    176175  | ORL (`U1(`A, `INDIRECT i1)) ->
    177     [(false,true,false,false),(false,true,true,i1)]
     176    "ORL A @Ri (" ^ pretty_bit i1 ^ ")"
    178177  | ORL (`U1(`A, `DATA b1)) ->
    179     [(false,true,false,false),(false,true,false,false); b1]
     178    "ORL A #data (" ^ pretty_byte b1 ^ ")"
    180179  | ORL (`U2(`DIRECT b1, `A)) ->
    181     [(false,true,false,false),(false,false,true,false); b1]
     180    "ORL direct A (" ^ pretty_byte b1 ^ ")"
    182181  | ORL (`U2 (`DIRECT b1, `DATA b2)) ->
    183     [(false,true,false,false),(false,false,true,true); b1; b2]
     182    "ORL direct #data (" ^ pretty_byte b1 ^ pretty_byte b2 ^ ")"
    184183  | ORL (`U3 (`C, `BIT b1)) ->
    185     [(false,true,true,true),(false,false,true,false); byte_of_byte7 b1]
     184    "ORL C bit (" ^ pretty_byte b1 ^ ")"
    186185  | ORL (`U3 (`C, `NBIT b1)) ->
    187     [(true,false,true,false),(false,false,false,false); byte_of_byte7 b1]
     186    "ORL C \\bit (" ^ pretty_byte b1 ^ ")"
    188187  | POP (`DIRECT b1) ->
    189     [(true,true,false,true),(false,false,false,false); b1]
     188    "POP direct (" ^ pretty_byte b1 ^ ")"
    190189  | PUSH (`DIRECT b1) ->
    191     [(true,true,false,false),(false,false,false,false); b1]
     190    "PUSH direct (" ^ pretty_byte b1 ^ ")"
    192191  | RET ->
    193     [(false,false,true,false),(false,false,true,false)]
     192    "RET"
    194193  | RETI ->
    195     [(false,false,true,true),(false,false,true,false)]
     194    "RETI"
    196195  | RL `A ->
    197     [(false,false,true,false),(false,false,true,true)]
     196    "RL A"
    198197  | RLC `A ->
    199     [(false,false,true,true),(false,false,true,true)]
     198    "RLC A"
    200199  | RR `A ->
    201     [(false,false,false,false),(false,false,true,true)]
     200    "RR A"
    202201  | RRC `A ->
    203     [(false,false,false,true),(false,false,true,true)]
     202    "RRC A"
    204203  | SETB `C ->
    205     [(true,true,false,true),(false,false,true,true)]
     204    "SETB C"
    206205  | SETB (`BIT b1) ->
    207     [(true,true,false,true),(false,false,true,false); byte_of_byte7 b1]
     206    "SETB bit (" ^ pretty_byte b1 ^ ")"
    208207  | SJMP (`REL b1) ->
    209     [(true,false,false,false),(false,false,false,false); b1]
     208    "SJMP rel (" ^ pretty_byte b1 ^ ")"
     209  | SUBB (`A, `REG(r1,r2,r3)) ->
     210    "SUBB A Rn (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ ")"
    210211  | SUBB (`A, `DIRECT b1) ->
    211     [(true,false,false,true),(false,true,false,true); b1]
     212    "SUBB A direct (" ^ pretty_byte b1 ^ ")"
    212213  | SUBB (`A, `INDIRECT i1) ->
    213     [(true,false,false,true),(false,true,true,i1)]
     214    "SUBB A @Ri (" ^ pretty_bit i1 ^ ")"
    214215  | SUBB (`A, `DATA b1) ->
    215     [(true,false,false,true),(false,true,false,false); b1]
     216    "SUBB A #data (" ^ pretty_byte b1 ^ ")"
    216217  | SWAP `A ->
    217     [(true,true,false,false),(false,true,false,false)]
     218    "SWAP A"
    218219  | XCH (`A, `REG(r1,r2,r3)) ->
    219     [(true,true,false,false),(true,r1,r2,r3)]
     220    "XCH A Rn (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ ")"
    220221  | XCH (`A, `DIRECT b1) ->
    221     [(true,true,false,false),(false,true,false,true); b1]
     222    "XCH A direct (" ^ pretty_byte b1 ^ ")"
    222223  | XCH (`A, `INDIRECT i1) ->
    223     [(true,true,false,false),(false,true,true,i1)]
     224    "XCH A @Ri (" ^ pretty_bit i1 ^ ")"
    224225  | XCHD(`A, `INDIRECT i1) ->
    225     [(true,true,false,true),(false,true,true,i1)]
     226    "XCHD A @Ri (" ^ pretty_bit i1 ^ ")"
    226227  | XRL(`U1(`A, `REG(r1,r2,r3))) ->
    227     [(false,true,true,false),(true,r1,r2,r3)]
     228    "XRL A Rn (" ^ pretty_bit r1 ^ pretty_bit r2 ^ pretty_bit r3 ^ ")"
    228229  | XRL(`U1(`A, `DIRECT b1)) ->
    229     [(false,true,true,false),(false,true,false,true); b1]
     230    "XRL A direct (" ^ pretty_byte b1 ^ ")"
    230231  | XRL(`U1(`A, `INDIRECT i1)) ->
    231     [(false,true,true,false),(false,true,true,i1)]
     232    "XRL A @Ri (" ^ pretty_bit i1 ^ ")"
    232233  | XRL(`U1(`A, `DATA b1)) ->
    233     [(false,true,true,false),(false,true,false,false); b1]
     234    "XRL A #data (" ^ pretty_byte b1 ^ ")"
    234235  | XRL(`U2(`DIRECT b1, `A)) ->
    235     [(false,true,true,false),(false,false,true,false); b1]
     236    "XRL direct A (" ^ pretty_byte b1 ^ ")"
    236237  | XRL(`U2(`DIRECT b1, `DATA b2)) ->
    237     [(false,true,true,false),(false,false,true,true); b1; b2] *)
     238    "XRL direct #data (" ^ pretty_byte b2 ^ ")"
    238239;;
Note: See TracChangeset for help on using the changeset viewer.