ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/uae_cpu/readcpu.cpp
(Generate patch)

Comparing BasiliskII/src/uae_cpu/readcpu.cpp (file contents):
Revision 1.9 by gbeauche, 2005-06-06T19:22:56Z vs.
Revision 1.10 by gbeauche, 2007-06-29T16:32:05Z

# Line 908 | Line 908 | int get_no_mismatches (void)
908   {
909      return mismatch;
910   }
911 +
912 + const char *get_instruction_name (unsigned int opcode)
913 + {
914 +    struct instr *ins = &table68k[opcode];
915 +    for (int i = 0; lookuptab[i].name[0]; i++) {
916 +        if (ins->mnemo == lookuptab[i].mnemo)
917 +            return lookuptab[i].name;
918 +    }
919 +    abort();
920 +    return NULL;
921 + }
922 +
923 + static char *get_ea_string (amodes mode, wordsizes size)
924 + {
925 +    static char buffer[80];
926 +
927 +    buffer[0] = 0;
928 +    switch (mode){
929 +     case Dreg:
930 +        strcpy (buffer,"Dn");
931 +        break;
932 +     case Areg:
933 +        strcpy (buffer,"An");
934 +        break;
935 +     case Aind:
936 +        strcpy (buffer,"(An)");
937 +        break;
938 +     case Aipi:
939 +        strcpy (buffer,"(An)+");
940 +        break;
941 +     case Apdi:
942 +        strcpy (buffer,"-(An)");
943 +        break;
944 +     case Ad16:
945 +        strcpy (buffer,"(d16,An)");
946 +        break;
947 +     case Ad8r:
948 +        strcpy (buffer,"(d8,An,Xn)");
949 +        break;
950 +     case PC16:
951 +        strcpy (buffer,"(d16,PC)");
952 +        break;
953 +     case PC8r:
954 +         strcpy (buffer,"(d8,PC,Xn)");
955 +        break;
956 +     case absw:
957 +        strcpy (buffer,"(xxx).W");
958 +        break;
959 +     case absl:
960 +        strcpy (buffer,"(xxx).L");
961 +        break;
962 +     case imm:
963 +        switch (size){
964 +         case sz_byte:
965 +            strcpy (buffer,"#<data>.B");
966 +            break;
967 +         case sz_word:
968 +            strcpy (buffer,"#<data>.W");
969 +            break;
970 +         case sz_long:
971 +            strcpy (buffer,"#<data>.L");
972 +            break;
973 +         default:
974 +            break;
975 +        }
976 +        break;
977 +     case imm0:
978 +        strcpy (buffer,"#<data>.B");
979 +        break;
980 +     case imm1:
981 +        strcpy (buffer,"#<data>.W");
982 +        break;
983 +     case imm2:
984 +        strcpy (buffer,"#<data>.L");
985 +        break;
986 +     case immi:
987 +        strcpy (buffer,"#<data>");
988 +        break;
989 +
990 +     default:
991 +        break;
992 +    }
993 +    return buffer;
994 + }
995 +
996 + const char *get_instruction_string (unsigned int opcode)
997 + {
998 +    static char out[100];
999 +    struct instr *ins;
1000 +
1001 +    strcpy (out, get_instruction_name (opcode));
1002 +
1003 +    ins = &table68k[opcode];
1004 +    if (ins->size == sz_byte)
1005 +        strcat (out,".B");
1006 +    if (ins->size == sz_word)
1007 +        strcat (out,".W");
1008 +    if (ins->size == sz_long)
1009 +        strcat (out,".L");
1010 +    strcat (out," ");
1011 +    if (ins->suse)
1012 +        strcat (out, get_ea_string (ins->smode, ins->size));
1013 +    if (ins->duse) {
1014 +        if (ins->suse)
1015 +            strcat (out,",");
1016 +        strcat (out, get_ea_string (ins->dmode, ins->size));
1017 +    }
1018 +    return out;
1019 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines