Ignore:
Timestamp:
May 1, 2019, 11:39:27 PM (6 years ago)
Author:
chronos
Message:
  • Added: Partial implementation of compiler to Pascal source.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/virtualcpu4/UCpu.pas

    r184 r186  
    275275  case AddrSize of
    276276    bw8: case DataSize of
    277       bw8: Registers[R1].B := PByte(Memory + PByte(@Registers[R2])^)^;
    278       bw16: Registers[R1].W := PWord(Memory + PByte(@Registers[R2])^)^;
    279       bw32: Registers[R1].D := PDWord(Memory + PByte(@Registers[R2])^)^;
    280       bw64: Registers[R1].Q := PQWord(Memory + PByte(@Registers[R2])^)^;
     277      bw8: Registers[R1].B := PByte(Memory + Registers[R2].B)^;
     278      bw16: Registers[R1].W := PWord(Memory + Registers[R2].B)^;
     279      bw32: Registers[R1].D := PDWord(Memory + Registers[R2].B)^;
     280      bw64: Registers[R1].Q := PQWord(Memory + Registers[R2].B)^;
    281281    end;
    282282    bw16: case DataSize of
    283       bw8: Registers[R1].B := PByte(Memory + PWord(@Registers[R2])^)^;
    284       bw16: Registers[R1].W := PWord(Memory + PWord(@Registers[R2])^)^;
    285       bw32: Registers[R1].D := PDWord(Memory + PWord(@Registers[R2])^)^;
    286       bw64: Registers[R1].Q := PQWord(Memory + PWord(@Registers[R2])^)^;
     283      bw8: Registers[R1].B := PByte(Memory + Registers[R2].W)^;
     284      bw16: Registers[R1].W := PWord(Memory + Registers[R2].W)^;
     285      bw32: Registers[R1].D := PDWord(Memory + Registers[R2].W)^;
     286      bw64: Registers[R1].Q := PQWord(Memory + Registers[R2].W)^;
    287287    end;
    288288    bw32: case DataSize of
    289       bw8: Registers[R1].B := PByte(Memory + PDWord(@Registers[R2])^)^;
    290       bw16: Registers[R1].W := PWord(Memory + PDWord(@Registers[R2])^)^;
    291       bw32: Registers[R1].D := PDWord(Memory + PDWord(@Registers[R2])^)^;
    292       bw64: Registers[R1].Q := PQWord(Memory + PDWord(@Registers[R2])^)^;
     289      bw8: Registers[R1].B := PByte(Memory + Registers[R2].D)^;
     290      bw16: Registers[R1].W := PWord(Memory + Registers[R2].D)^;
     291      bw32: Registers[R1].D := PDWord(Memory + Registers[R2].D)^;
     292      bw64: Registers[R1].Q := PQWord(Memory + Registers[R2].D)^;
    293293    end;
    294294    bw64: case DataSize of
    295       bw8: Registers[R1].B := PByte(Memory + PQWord(@Registers[R2])^)^;
    296       bw16: Registers[R1].W := PWord(Memory + PQWord(@Registers[R2])^)^;
    297       bw32: Registers[R1].D := PDWord(Memory + PQWord(@Registers[R2])^)^;
    298       bw64: Registers[R1].Q := PQWord(Memory + PQWord(@Registers[R2])^)^;
     295      bw8: Registers[R1].B := PByte(Memory + Registers[R2].Q)^;
     296      bw16: Registers[R1].W := PWord(Memory + Registers[R2].Q)^;
     297      bw32: Registers[R1].D := PDWord(Memory + Registers[R2].Q)^;
     298      bw64: Registers[R1].Q := PQWord(Memory + Registers[R2].Q)^;
    299299    end;
    300300  end;
     
    309309  case AddrSize of
    310310    bw8: case DataSize of
    311       bw8: PByte(Memory + PByte(@Registers[R1])^)^ := Registers[R2].B;
    312       bw16: PWord(Memory + PByte(@Registers[R1])^)^ := Registers[R2].W;
    313       bw32: PDWord(Memory + PByte(@Registers[R1])^)^ := Registers[R2].D;
    314       bw64: PQWord(Memory + PByte(@Registers[R1])^)^ := Registers[R2].Q;
     311      bw8: PByte(Memory + Registers[R1].B)^ := Registers[R2].B;
     312      bw16: PWord(Memory + Registers[R1].B)^ := Registers[R2].W;
     313      bw32: PDWord(Memory + Registers[R1].B)^ := Registers[R2].D;
     314      bw64: PQWord(Memory + Registers[R1].B)^ := Registers[R2].Q;
    315315    end;
    316316    bw16: case DataSize of
    317       bw8: PByte(Memory + PWord(@Registers[R1])^)^ := Registers[R2].B;
    318       bw16: PWord(Memory + PWord(@Registers[R1])^)^ := Registers[R2].W;
    319       bw32: PDWord(Memory + PWord(@Registers[R1])^)^ := Registers[R2].D;
    320       bw64: PQWord(Memory + PWord(@Registers[R1])^)^ := Registers[R2].Q;
     317      bw8: PByte(Memory + Registers[R1].W)^ := Registers[R2].B;
     318      bw16: PWord(Memory + Registers[R1].W)^ := Registers[R2].W;
     319      bw32: PDWord(Memory + Registers[R1].W)^ := Registers[R2].D;
     320      bw64: PQWord(Memory + Registers[R1].W)^ := Registers[R2].Q;
    321321    end;
    322322    bw32: case DataSize of
    323       bw8: PByte(Memory + PDWord(@Registers[R1])^)^ := Registers[R2].B;
    324       bw16: PWord(Memory + PDWord(@Registers[R1])^)^ := Registers[R2].W;
    325       bw32: PDWord(Memory + PDWord(@Registers[R1])^)^ := Registers[R2].D;
    326       bw64: PQWord(Memory + PDWord(@Registers[R1])^)^ := Registers[R2].Q;
     323      bw8: PByte(Memory + Registers[R1].D)^ := Registers[R2].B;
     324      bw16: PWord(Memory + Registers[R1].D)^ := Registers[R2].W;
     325      bw32: PDWord(Memory + Registers[R1].D)^ := Registers[R2].D;
     326      bw64: PQWord(Memory + Registers[R1].D)^ := Registers[R2].Q;
    327327    end;
    328328    bw64: case DataSize of
    329       bw8: PByte(Memory + PQWord(@Registers[R1])^)^ := Registers[R2].B;
    330       bw16: PWord(Memory + PQWord(@Registers[R1])^)^ := Registers[R2].W;
    331       bw32: PDWord(Memory + PQWord(@Registers[R1])^)^ := Registers[R2].D;
    332       bw64: PQWord(Memory + PQWord(@Registers[R1])^)^ := Registers[R2].Q;
     329      bw8: PByte(Memory + Registers[R1].Q)^ := Registers[R2].B;
     330      bw16: PWord(Memory + Registers[R1].Q)^ := Registers[R2].W;
     331      bw32: PDWord(Memory + Registers[R1].Q)^ := Registers[R2].D;
     332      bw64: PQWord(Memory + Registers[R1].Q)^ := Registers[R2].Q;
    333333    end;
    334334  end;
Note: See TracChangeset for help on using the changeset viewer.