Changeset 42


Ignore:
Timestamp:
Sep 8, 2010, 11:24:01 AM (9 years ago)
Author:
mulligan
Message:

Address1 function completed for instructions A--M.

Location:
Deliverables/D4.1
Files:
3 edited

Legend:

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

    r41 r42  
    193193       let pc,b1 = next pc in
    194194       let pc,b2 = next pc in
    195          LCALL (`ADDR16 (b1,b1)), pc, 2
     195         LCALL (`ADDR16 (b1,b2)), pc, 2
    196196   | (false,false,false,false),(false,false,true,false) ->
    197197       let pc,b1 = next pc in
    198198       let pc,b2 = next pc in
    199          LJMP (`ADDR16 (b1,b1)), pc, 2
     199         LJMP (`ADDR16 (b1,b2)), pc, 2
    200200   | (true,true,true,false),(true,r1,r2,r3) ->
    201201         MOV (`U1 (`A, `REG(r1,r2,r3))), pc, 1
     
    390390  | ANL (`U2 (`DIRECT b1,`DATA b2)) ->
    391391     [(false,true,false,true),(false,false,true,true); b1; b2]
    392 (*  | ANL (`U3 (`C,`BIT b1)) ->
    393      [(true,false,false,false),(false,false,true,false); b1]
     392  | ANL (`U3 (`C,`BIT b1)) ->
     393     [(true,false,false,false),(false,false,true,false); byte_of_byte7 b1]
    394394  | ANL (`U3 (`C,`NBIT b1)) ->
    395     [(true,false,true,true),(false,false,false,false); b1] *)
     395    [(true,false,true,true),(false,false,false,false); byte_of_byte7 b1]
     396  | CJNE (`U1 (`A, `DIRECT b1), `REL b2) ->
     397    [(true,false,true,true),(false,true,false,true); b1; b2]
     398  | CJNE (`U1 (`A, `DATA b1), `REL b2) ->
     399    [(true,false,true,true),(false,true,false,false); b1; b2]
     400  | CJNE (`U2 (`REG(r1,r2,r3), `DATA b1), `REL b2) ->
     401    [(true,false,true,true),(true,r1,r2,r3); b1; b2]
     402  | CJNE (`U2 (`INDIRECT i1, `DATA b1), `REL b2) ->
     403    [(true,false,true,true),(false,true,true,i1); b1; b2]
     404  | CLR `A ->
     405    [(true,true,true,false),(false,true,false,false)]
     406  | CLR `C ->
     407    [(true,true,false,false),(false,false,true,true)]
     408  | CLR (`BIT b1) ->
     409    [(true,true,false,false),(false,false,true,false); byte_of_byte7 b1]
     410  | DA `A ->
     411    [(true,true,false,true),(false,true,false,false)]
     412  | DEC `A ->
     413    [(false,false,false,true),(false,true,false,false)]
     414  | DEC (`REG(r1,r2,r3)) ->
     415    [(false,false,false,true),(true,r1,r2,r3)]
     416  | DEC (`DIRECT b1) ->
     417    [(false,false,false,true),(false,true,false,true); b1]
     418  | DEC (`INDIRECT i1) ->
     419    [(false,false,false,true),(false,true,true,i1)]
     420  | DIV (`A, `B) ->
     421    [(true,false,false,false),(false,true,false,false)]
     422  | DJNZ (`REG(r1,r2,r3), `REL b1) ->
     423    [(true,true,false,true),(true,r1,r2,r3); b1]
     424  | DJNZ (`DIRECT b1, `REL b2) ->
     425    [(true,true,false,true),(false,true,false,true); b1; b2]
     426  | INC `A ->
     427    [(false,false,false,false),(false,true,false,false)]
     428  | INC (`REG(r1,r2,r3)) ->
     429    [(false,false,false,false),(true,r1,r2,r3)]
     430  | INC (`DIRECT b1) ->
     431    [(false,false,false,false),(false,true,false,true); b1]
     432  | INC (`INDIRECT i1) ->
     433    [(false,false,false,false),(false,true,true,i1)]
     434  | INC `DPTR ->
     435    [(true,false,true,false),(false,false,true,true)]
     436  | JB (`BIT b1, `REL b2) ->
     437    [(false,false,true,false),(false,false,false,false); byte_of_byte7 b1; b2]
     438  | JBC (`BIT b1, `REL b2) ->
     439    [(false,false,false,true),(false,false,false,false); byte_of_byte7 b1; b2]
     440  | JC (`REL b1) ->
     441    [(false,true,false,false),(false,false,false,false); b1]
     442  | JMP `IND_DPTR ->
     443    [(false,true,true,true),(false,false,true,true)]
     444  | JNB (`BIT b1, `REL b2) ->
     445    [(false,false,true,true),(false,false,false,false); byte_of_byte7 b1; b2]
     446  | JNC (`REL b1) ->
     447    [(false,true,false,true),(false,false,false,false); b1]
     448  | JNZ (`REL b1) ->
     449    [(false,true,true,true),(false,false,false,false); b1]
     450  | JZ (`REL b1) ->
     451    [(false,true,true,false),(false,false,false,false); b1]
     452  | LCALL (`ADDR16 (b1,b2)) ->
     453    [(false,false,false,true),(false,false,true,false); b1; b2]
     454  | LJMP (`ADDR16 (b1,b2)) ->
     455    [(false,false,false,false),(false,false,true,false); b1; b2]
     456  | MOV (`U1 (`A, `REG(r1,r2,r3))) ->
     457    [(true,true,true,false),(true,r1,r2,r3)]
     458  | MOV (`U1 (`A, `DIRECT b1)) ->
     459    [(true,true,true,false),(false,true,false,true); b1]
     460  | MOV (`U1 (`A, `INDIRECT i1)) ->
     461    [(true,true,true,false),(false,true,true,i1)]
     462  | MOV (`U1 (`A, `DATA b1)) ->
     463    [(false,true,true,true),(false,true,false,false); b1]
     464  | MOV (`U2 (`REG(r1,r2,r3), `A)) ->
     465    [(true,true,true,true),(true,r1,r2,r3)]
     466  | MOV (`U2 (`REG(r1,r2,r3), (`DIRECT b1))) ->
     467    [(true,false,true,false),(true,r1,r2,r3); b1]
     468  | MOV (`U2 (`REG(r1,r2,r3), (`DATA b1))) ->
     469    [(false,true,true,true),(true,r1,r2,r3); b1]
     470  | MOV (`U3 (`DIRECT b1, `A)) ->
     471    [(true,true,true,true),(false,true,false,true); b1]
     472  | MOV (`U3 (`DIRECT b1, `REG(r1,r2,r3))) ->
     473    [(true,false,false,false),(true,r1,r2,r3); b1]
     474  | MOV (`U3 (`DIRECT b1, `DIRECT b2)) ->
     475    [(true,false,false,false),(false,true,false,true); b1; b2]
     476  | MOV (`U3 (`DIRECT b1, `INDIRECT i1)) ->
     477    [(true,false,false,false),(false,true,true,i1); b1]
     478  | MOV (`U3 (`DIRECT b1, `DATA b2)) ->
     479    [(false,true,true,true),(false,true,false,true); b1; b2]
     480  | MOV (`U2 (`INDIRECT i1, `A)) ->
     481    [(true,true,true,true),(false,true,true,i1)]
     482  | MOV (`U2 (`INDIRECT i1, `DIRECT b1)) ->
     483    [(true,false,true,false),(false,true,true,i1); b1]
     484  | MOV (`U2 (`INDIRECT i1, `DATA b1)) ->
     485    [(false,true,true,true),(false,true,true,i1); b1]
     486  | MOV (`U5 (`C, `BIT b1)) ->
     487    [(true,false,true,false),(false,false,true,false); byte_of_byte7 b1]
     488  | MOV (`U6 (`BIT b1, `C)) ->
     489    [(true,false,false,true),(false,false,true,false); byte_of_byte7 b1]
     490  | MOV (`U4 (`DPTR, `DATA16(b1,b2))) ->
     491    [(true,false,false,true),(false,false,false,false); b1; b2]
     492  | MOVC (`A, `A_DPTR) ->
     493    [(true,false,false,true),(false,false,true,true)]
     494  | MOVC (`A, `A_PC) ->
     495    [(true,false,false,false),(false,false,true,true)]
     496  | MOVX (`U1 (`A, `INDIRECT i1)) ->
     497    [(true,true,true,false),(false,false,true,i1)]
     498  | MOVX (`U1 (`A, `IND_DPTR)) ->
     499    [(true,true,true,false),(false,false,false,false)]
     500  | MOVX (`U2 (`INDIRECT i1, `A)) ->
     501    [(true,true,true,true),(false,false,true,i1)]
     502  | MOVX (`U2 (`IND_DPTR, `A)) ->
     503    [(true,true,true,true),(false,false,false,false)]
     504  | MUL(`A, `B) ->
     505    [(true,false,true,false),(false,true,false,false)]
    396506;;
    397507
  • Deliverables/D4.1/physical.ml

    r41 r42  
    107107;;
    108108
    109 let byte_of_bit b =
    110   (false,false,false,false),(false,false,false,b)
     109let byte7_of_bit b =
     110  false,false,false,(false,false,false,b)
    111111;;
     112
     113let byte_of_byte7 (b1,b2,b3,n) =
     114        (false,b1,b2,b3),n
  • Deliverables/D4.1/physical.mli

    r41 r42  
    1919val int_of_byte: byte -> int
    2020val int_of_nibble: nibble -> int
    21 val byte_of_bit: bit -> byte
     21val byte7_of_bit: bit -> byte7
     22val byte_of_byte7: byte7 -> byte
    2223
    2324val (++): word -> int -> word
Note: See TracChangeset for help on using the changeset viewer.