Changeset 35


Ignore:
Timestamp:
Sep 3, 2010, 3:44:27 PM (9 years ago)
Author:
mulligan
Message:

`fetch' function complete.

Location:
Deliverables/D4.1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Deliverables/D4.1/ASM.mli

    r31 r35  
    4040     carry * [ bit | nbit]) union3
    4141 | ORL of
    42     (acc * [ reg | direct | indirect ],
     42    (acc * [ reg | data | direct | indirect ],
    4343     direct * [ acc | data ],
    4444     carry * [ bit | nbit]) union3
    4545 | XRL of
    46     (acc * [ reg | direct | indirect ],
     46    (acc * [ data | reg | direct | indirect ],
    4747     direct * [ acc | data ]) union2
    4848 | CLR of [ acc | carry | bit ]
  • Deliverables/D4.1/ASMInterpret.ml

    r33 r35  
    269269   | (false,true,false,false),(true,r1,r2,r3) ->
    270270         ORL (`U1(`A, `REG(r1,r2,r3))), pc, 1
     271   | (false,true,false,false),(false,true,false,true) ->
     272       let pc,b1 = next pc in
     273         ORL (`U1(`A, `DIRECT b1)), pc, 1
     274   | (false,true,false,false),(false,true,true,i1) ->
     275         ORL (`U1(`A, `INDIRECT i1)), pc, 1
     276   | (false,true,false,false),(false,true,false,false) ->
     277       let pc,b1 = next pc in
     278         ORL (`U1(`A, `DATA b1)), pc, 1
     279   | (false,true,false,false),(false,false,true,false) ->
     280       let pc,b1 = next pc in
     281         ORL (`U2(`DIRECT b1, `A)), pc, 1
     282   | (false,true,false,false),(false,false,true,true) ->
     283       let pc,b1 = next pc in
     284       let pc,b2 = next pc in
     285         ORL (`U2 (`DIRECT b1, `DATA b2)), pc, 2
     286   | (false,true,true,true),(false,false,true,false) ->
     287       let pc,b1 = next7 pc in
     288         ORL (`U3 (`C, `BIT b1)), pc, 2
     289   | (true,false,true,false),(false,false,false,false) ->
     290       let pc,b1 = next7 pc in
     291         ORL (`U3 (`C, `NBIT b1)), pc, 2
     292   | (true,true,false,true),(false,false,false,false) ->
     293       let pc,b1 = next pc in
     294         POP (`DIRECT b1), pc, 2
     295   | (true,true,false,false),(false,false,false,false) ->
     296       let pc,b1 = next pc in
     297         PUSH (`DIRECT b1), pc, 2
     298   | (false,false,true,false),(false,false,true,false) ->
     299         RET, pc, 2
     300   | (false,false,true,true),(false,false,true,false) ->
     301         RETI, pc, 2
     302   | (false,false,true,false),(false,false,true,true) ->
     303         RL `A, pc, 1
     304   | (false,false,true,true),(false,false,true,true) ->
     305         RLC `A, pc, 1
     306   | (false,false,false,false),(false,false,true,true) ->
     307         RR `A, pc, 1
     308   | (false,false,false,true),(false,false,true,true) ->
     309         RRC `A, pc, 1
     310   | (true,true,false,true),(false,false,true,true) ->
     311         SETB `C, pc, 1
     312   | (true,true,false,true),(false,false,true,false) ->
     313       let pc,b1 = next7 pc in
     314         SETB (`BIT b1), pc, 1
     315   | (true,false,false,false),(false,false,false,false) ->
     316       let pc,b1 = next pc in
     317         SJMP (`REL b1), pc, 2
     318   | (true,false,false,true),(false,true,false,true) ->
     319       let pc,b1 = next pc in
     320         SUBB (`A, `DIRECT b1), pc, 1
     321   | (true,false,false,true),(false,true,true,i1) ->
     322         SUBB (`A, `INDIRECT i1), pc, 1
     323   | (true,false,false,true),(false,true,false,false) ->
     324       let pc,b1 = next pc in
     325         SUBB (`A, `DATA b1), pc, 1
     326   | (true,true,false,false),(false,true,false,false) ->
     327         SWAP `A, pc, 1
     328   | (true,true,false,false),(true,r1,r2,r3) ->
     329         XCH (`A, `REG(r1,r2,r3)), pc, 1
     330   | (true,true,false,false),(false,true,false,true) ->
     331       let pc,b1 = next pc in
     332         XCH (`A, `DIRECT b1), pc, 1
     333   | (true,true,false,false),(false,true,true,i1) ->
     334         XCH (`A, `INDIRECT i1), pc, 1
     335   | (true,true,false,true),(false,true,true,i1) ->
     336         XCHD(`A, `INDIRECT i1), pc, 1
     337   | (false,true,true,false),(true,r1,r2,r3) ->
     338         XRL(`U1(`A, `REG(r1,r2,r3))), pc, 1
     339   | (false,true,true,false),(false,true,false,true) ->
     340       let pc,b1 = next pc in
     341         XRL(`U1(`A, `DIRECT b1)), pc, 1
     342   | (false,true,true,false),(false,true,true,i1) ->
     343         XRL(`U1(`A, `INDIRECT i1)), pc, 1
     344   | (false,true,true,false),(false,true,false,false) ->
     345       let pc,b1 = next pc in
     346         XRL(`U1(`A, `DATA b1)), pc, 1
     347   | (false,true,true,false),(false,false,true,false) ->
     348       let pc,b1 = next pc in
     349         XRL(`U2(`DIRECT b1, `A)), pc, 1
     350   | (false,true,true,false),(false,false,true,true) ->
     351       let pc,b1 = next pc in
     352       let pc,b2 = next pc in
     353         XRL(`U2(`DIRECT b1, `DATA b2)), pc, 2
    271354 with
    272355  Not_found -> raise BOO
Note: See TracChangeset for help on using the changeset viewer.