OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gen_or1k_isa/] [sources/] [gen_or1k_isa.c] - Diff between revs 95 and 155

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 95 Rev 155
Line 6... Line 6...
#define RELOC_32 1
#define RELOC_32 1
#define RELOC_8 2
#define RELOC_8 2
#define RELOC_CONST 3
#define RELOC_CONST 3
#define RELOC_CONSTH 4
#define RELOC_CONSTH 4
 
 
#include "or1.h"
#include "opcode/or32.h"
#include "or1k_isadesc.h"
#include "or1k_isadesc.h"
 
 
/* types of data in encoding field. */
/* types of data in encoding field. */
typedef enum { opcode, reserved, operand } encfld_types;
typedef enum { opcode, reserved, operand } encfld_types;
 
 
Line 101... Line 101...
        printf("|}\n\\hline\n");
        printf("|}\n\\hline\n");
 
 
        /* print first row of the table */
        /* print first row of the table */
        for(i = decoded.insn_size - 1; i > 0; i--)
        for(i = decoded.insn_size - 1; i > 0; i--)
                if (decoded.bitpos[i])
                if (decoded.bitpos[i])
                        printf("%d&\n", i);
                        printf("{\\footnotesize\\hspace{-0.5mm}\\hfil%d\\hfil}&\n", i);
                else
                else
                        printf(".&\n");
                        printf("{\\footnotesize\\hspace{-1.5mm}\\hfil.\\hfil}&\n");
        printf("0\\\\\n\\hline\n");
        printf("0\\\\\n\\hline\n");
 
 
        /* print second row of the table */
        /* print second row of the table */
        for(i = 1; i <= decoded.fldcnt; i++) {
        for(i = 1; i <= decoded.fldcnt; i++) {
                if (decoded.field[i].type == opcode) {
                if (decoded.field[i].type == opcode) {
                        printf("\\multicolumn{%d}{", decoded.field[i].bitsize);
                        printf("\\multicolumn{%d}{", decoded.field[i].bitsize);
                        printf("%s", (i == 1 ? "|":""));
                        printf("%s", (i == 1 ? "|":""));
                        printf("c|}{opcode 0x%x}", decoded.field[i].value);
                        printf("c|}{\\small{opcode 0x%x}}", decoded.field[i].value);
                } else if (decoded.field[i].type == operand) {
                } else if (decoded.field[i].type == operand) {
                        printf("\\multicolumn{%d}{", decoded.field[i].bitsize);
                        printf("\\multicolumn{%d}{", decoded.field[i].bitsize);
                        printf("%s", (i == 1 ? "|":""));
                        printf("%s", (i == 1 ? "|":""));
                        printf("c|}{%c}", decoded.field[i].value);
                        printf("c|}{\\small{%c }}", decoded.field[i].value);
                } else if (decoded.field[i].type == reserved) {
                } else if (decoded.field[i].type == reserved) {
                        printf("\\multicolumn{%d}{", decoded.field[i].bitsize);
                        printf("\\multicolumn{%d}{", decoded.field[i].bitsize);
                        printf("%s", (i == 1 ? "|":""));
                        printf("%s", (i == 1 ? "|":""));
                        printf("c|}{reserved}", decoded.field[i].value);
                        printf("c|}{\\small{reserved}}", decoded.field[i].value);
                }
                }
                if (i == decoded.fldcnt)
                if (i == decoded.fldcnt)
                        printf("\\\\\n");
                        printf("\\\\\n");
                else
                else
                        printf("&\n");
                        printf("&\n");
Line 131... Line 131...
        printf("\n\\hline\n");
        printf("\n\\hline\n");
 
 
        /* print third row of the table */
        /* print third row of the table */
        for(i = 1; i < decoded.fldcnt; i++) {
        for(i = 1; i < decoded.fldcnt; i++) {
                printf("\\multicolumn{%d}", decoded.field[i].bitsize);
                printf("\\multicolumn{%d}", decoded.field[i].bitsize);
                printf("{%sc|}{%d bits}&\n", (i == 1 ? "|":""), decoded.field[i].bitsize);
                printf("{%sc|}{\\small{%d bits}}&\n", (i == 1 ? "|":""), decoded.field[i].bitsize);
        }
        }
        printf("\\multicolumn{%d}", decoded.field[i].bitsize);
        printf("\\multicolumn{%d}", decoded.field[i].bitsize);
        printf("{%sc|}{%d bits}\\\\\n", (i == 1 ? "|":""), decoded.field[i].bitsize);
        printf("{%sc|}{\\small{%d}bits}\\\\\n", (i == 1 ? "|":""), decoded.field[i].bitsize);
/*      printf("\n\\hline\n");
        printf("\n\\hline\n");
/*      printf("\\multicolumn{32}");
/*      printf("\\multicolumn{32}");
/*      printf("{|c|}{\\textcolor{white}{XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX ");
/*      printf("{|c|}{\\textcolor{white}{XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX ");
        printf("XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX}}\\\\\n");*/
        printf("XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX}}\\\\\n");*/
        printf("\\end{tabular}\\par}\n");
        printf("\\end{tabular}\\par}\n");
}
}
 
 
Line 339... Line 339...
        printf("\\lyxline{\\small}\\vspace{-1\\parskip}\n");
        printf("\\lyxline{\\small}\\vspace{-1\\parskip}\n");
        printf("\\vspace{10mm}\n");
        printf("\\vspace{10mm}\n");
        printf("{\\centering \\begin{tabular}{ccc}\n");
        printf("{\\centering \\begin{tabular}{ccc}\n");
        printf("\\textbf{\\textcolor{white}{\\small Left}}\\textcolor{white}{\\small }&\n");
        printf("\\textbf{\\textcolor{white}{\\small Left}}\\textcolor{white}{\\small }&\n");
        printf("\\textcolor{white}{\\small }\\textbf{\\textcolor{white}{\\small Middle \n");
        printf("\\textcolor{white}{\\small }\\textbf{\\textcolor{white}{\\small Middle \n");
        printf("Middle Middle Middle Middle Middle Middle ");
        printf("Middle Middle Middle Middle ");
        printf("Middle Middle Middle Middle Middle Middle ");
        printf("Middle Middle Middle Middle ");
        printf("Middle Middle Middle}} \\textcolor{white}{\\small }&\n");
        printf("Middle}} \\textcolor{white}{\\small }&\n");
        printf("\\textcolor{white}{\\small }\\textbf{\\textcolor{white}{\\small Right}}\\\\\n");
        printf("\\textcolor{white}{\\small }\\textbf{\\textcolor{white}{\\small Right}}\\\\\n");
        transform_tex(insn->name, tmp);
        transform_tex(insn->name, tmp);
        printf("\\textbf{\\Large %s}&\n", tmp);
        printf("\\textbf{\\Large %s}&\n", tmp);
        transform_tex(info->title, tmp);
        transform_tex(info->title, tmp);
        printf("\\multicolumn{1}{c}{\\textbf{\\Large %s}}&\n", tmp);
        printf("\\multicolumn{1}{c}{\\textbf{\\Large %s}}&\n", tmp);
Line 386... Line 386...
                /* Find matching encoding. */
                /* Find matching encoding. */
                for (i = 0; strlen(or32_opcodes[i].name); i++)
                for (i = 0; strlen(or32_opcodes[i].name); i++)
                        if (strcmp(tmp->name, or32_opcodes[i].name) == 0) {
                        if (strcmp(tmp->name, or32_opcodes[i].name) == 0) {
                                fprintf(stderr, "PROCESSING: %s\n", tmp->name);
                                fprintf(stderr, "PROCESSING: %s\n", tmp->name);
                                info->desc = tmp;
                                info->desc = tmp;
                                info->opcode = &or32_opcodes[i];
                                info->opcode = (struct or32_opcode *) &or32_opcodes[i];
                                return tmp;
                                return tmp;
                        }
                        }
        }
        }
 
 
        return NULL;
        return NULL;
Line 421... Line 421...
{
{
        char tmp[2000];
        char tmp[2000];
 
 
        printf("\\vspace{15mm}\n");
        printf("\\vspace{15mm}\n");
 
 
        printf("{\\par \\raggedright \\textbf{\\Large Format:}\\Large \\par}\n");
        printf("{\\par \\raggedright \\textbf{\\large Format:}\\large \\par}\n");
        printf("\\vspace{5mm}\n");
        printf("\\vspace{5mm}\n");
        printf("\\begin{quotation}\n");
        printf("\\begin{quotation}\n");
        transform_tex(info->name, tmp);
        transform_tex(info->name, tmp);
        printf("\\texttt{\\large %s\\ ", tmp);
        printf("\\texttt{\\large %s\\ ", tmp);
        transform_tex(insn->args, tmp);
        transform_tex(insn->args, tmp);
        printf("%s}{\\large \\par}\n", tmp);
        printf("%s}{\\large \\par}\n", tmp);
        printf("\\end{quotation}\n");
        printf("\\end{quotation}\n");
        printf("\\vspace{10mm}\n");
        printf("\\vspace{10mm}\n");
 
 
        printf("\\textbf{\\Large Description:}{\\Large \\par}\n");
        printf("\\textbf{\\large Description:}{\\large \\par}\n");
        printf("\\vspace{5mm}\n");
        printf("\\vspace{5mm}\n");
        printf("\\begin{quotation}\n");
        printf("\\begin{quotation}\n");
        transform_tex(info->desc, tmp);
        transform_tex(info->desc, tmp);
        printf("%s\n", tmp);
        printf("%s\n", tmp);
        printf("\\end{quotation}\n");
        printf("\\end{quotation}\n");
        printf("\\vspace{10mm}\n");
        printf("\\vspace{10mm}\n");
 
 
        printf("\\textbf{\\Large 32-bit Implementation:}{\\Large \\par}\n");
        printf("\\textbf{\\large 32-bit Implementation:}{\\large \\par}\n");
        printf("\\vspace{5mm}\n");
        printf("\\vspace{5mm}\n");
        printf("\\begin{flushleft}\n");
        /*printf("\\begin{flushleft}\n");*/
        printf("\\begin{quotation}\n");
        printf("\\begin{quotation}\n");
        transform_tex(info->oper32, tmp);
        transform_tex(info->oper32, tmp);
        printf("\\texttt{\\large %s}{\\large \\par}\n", tmp);
        printf("\\texttt{\\large %s}{\\large \\par}\n", tmp);
        printf("\\end{quotation}\n");
        printf("\\end{quotation}\n");
        printf("\\end{flushleft}\n");
        /*printf("\\end{flushleft}\n");*/
        printf("\\vspace{10mm}\n");
        printf("\\vspace{10mm}\n");
 
 
        printf("\\textbf{\\Large 64-bit Implementation:}{\\Large \\par}\n");
        printf("\\textbf{\\large 64-bit Implementation:}{\\large \\par}\n");
        printf("\\vspace{5mm}\n");
        printf("\\vspace{5mm}\n");
        printf("\\begin{flushleft}\n");
        /*printf("\\begin{flushleft}\n");*/
        printf("\\begin{quotation}\n");
        printf("\\begin{quotation}\n");
        transform_tex(info->oper64, tmp);
        transform_tex(info->oper64, tmp);
        printf("\\texttt{\\large %s}{\\large \\par}\n", tmp);
        printf("\\texttt{\\large %s}{\\large \\par}\n", tmp);
        printf("\\end{quotation}\n");
        printf("\\end{quotation}\n");
        printf("\\end{flushleft}\n");
        /*printf("\\end{flushleft}\n");*/
        printf("\\vspace{10mm}\n");
        printf("\\vspace{10mm}\n");
 
 
        printf("\\textbf{\\Large Exceptions:}{\\Large \\par}\n");
        printf("\\textbf{\\large Exceptions:}{\\large \\par}\n");
        printf("\\vspace{5mm}\n");
        printf("\\vspace{5mm}\n");
        printf("\\begin{flushleft}\n");
        /*printf("\\begin{flushleft}\n");*/
        printf("\\begin{quotation}\n");
        printf("\\begin{quotation}\n");
        transform_tex(info->except, tmp);
        transform_tex(info->except, tmp);
        printf("\\texttt{\\large %s}{\\large \\par}\n",tmp);
        printf("\\texttt{\\large %s}{\\large \\par}\n",tmp);
        printf("\\end{quotation}\n");
        printf("\\end{quotation}\n");
        printf("\\end{flushleft}\n");
        /*printf("\\end{flushleft}\n");*/
        printf("\\vspace{10mm}\n");
        printf("\\vspace{10mm}\n");
 
 
        printf("\\textbf{\\Large Notes:}{\\Large \\par}\n");
        /*printf("\\textbf{\\large Notes:}{\\large \\par}\n");
        printf("\\vspace{5mm}\n");
        printf("\\vspace{5mm}\n");
        printf("\\begin{quotation}\n");
        printf("\\begin{quotation}\n");
        printf("\n");
        printf("\n");
        printf("\\end{quotation}\n");
        printf("\\end{quotation}\n");
        printf("\\vspace{10mm}\n");
        printf("\\vspace{10mm}\n");*/
 
 
        printf("\\vfill\n");
        printf("\\vfill\n");
        printf("{\\centering \\begin{tabular}{|c|c|}\n");
        printf("{\\centering \\begin{tabular}{|c|c|}\n");
        printf("\\hline\n");
        printf("\\hline\n");
        printf("Instruction Class&\n");
        printf("Instruction Class&\n");
        printf("Implementation\\\\\n");
        printf("Implementation\\\\\n");
        printf("\\hline\n");
        printf("\\hline\n");
        transform_tex(or1k_isa_classes[info->class].table, tmp);
        transform_tex(or1k_isa_classes[info->class].table, tmp);
        printf("%s\n", tmp);
        printf("%s\\hline\n", tmp);
        printf("\\end{tabular}\\par}\n");
        printf("\\end{tabular}\\par}\n");
 
 
        printf("\n");
        printf("\n");
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.