1 |
2 |
mrdmkg |
#include "cpu_1664.h"
|
2 |
|
|
|
3 |
|
|
struct cpu_1664 * cpu_1664_nova(nN cuantia)
|
4 |
|
|
{
|
5 |
|
|
struct cpu_1664 *cpu=(struct cpu_1664 *)memoria_nova(sizeof(struct cpu_1664));
|
6 |
|
|
cpu->lista_imaje=lista_nova(cuantia);
|
7 |
|
|
|
8 |
|
|
nN i;
|
9 |
|
|
for(i=0;i<(1<<cpu_1664_bitio_opera);i++)
|
10 |
|
|
{
|
11 |
|
|
cpu->opera_ajusta_vantaje[i]=i;
|
12 |
|
|
cpu->opera_ajusta_usor[i]=i;
|
13 |
|
|
}
|
14 |
|
|
|
15 |
|
|
//cpu->opera_lista[cpu_1664_opera_ajusta]=cpu_1664_opera__ajusta;
|
16 |
|
|
for(i=1; i<(1<<cpu_1664_bitio_ao); i++)
|
17 |
|
|
{
|
18 |
|
|
cpu->opera_lista[i]=cpu_1664_opera___; //opera nonlegal
|
19 |
|
|
}
|
20 |
|
|
|
21 |
|
|
cpu->opera_lista[cpu_1664_opera_yli]=cpu_1664_opera__yli;
|
22 |
|
|
cpu->opera_lista[cpu_1664_opera_ylr]=cpu_1664_opera__ylr;
|
23 |
|
|
cpu->opera_lista[cpu_1664_opera_ldi]=cpu_1664_opera__ldi;
|
24 |
|
|
cpu->opera_lista[cpu_1664_opera_ldis]=cpu_1664_opera__ldis;
|
25 |
|
|
cpu->opera_lista[cpu_1664_opera_ldm]=cpu_1664_opera__ldm;
|
26 |
|
|
cpu->opera_lista[cpu_1664_opera_stm]=cpu_1664_opera__stm;
|
27 |
|
|
cpu->opera_lista[cpu_1664_opera_ldr]=cpu_1664_opera__ldr;
|
28 |
|
|
cpu->opera_lista[cpu_1664_opera_str]=cpu_1664_opera__str;
|
29 |
|
|
cpu->opera_lista[cpu_1664_opera_cam]=cpu_1664_opera__cam;
|
30 |
|
|
cpu->opera_lista[cpu_1664_opera_ldb]=cpu_1664_opera__ldb;
|
31 |
|
|
cpu->opera_lista[cpu_1664_opera_stb]=cpu_1664_opera__stb;
|
32 |
|
|
cpu->opera_lista[cpu_1664_opera_cmp]=cpu_1664_opera__cmp;
|
33 |
|
|
cpu->opera_lista[cpu_1664_opera_dep]=cpu_1664_opera__dep;
|
34 |
|
|
cpu->opera_lista[cpu_1664_opera_bit]=cpu_1664_opera__bit;
|
35 |
|
|
cpu->opera_lista[cpu_1664_opera_rev]=cpu_1664_opera__rev;
|
36 |
|
|
|
37 |
|
|
cpu->opera_lista[cpu_1664_opera_and]=cpu_1664_opera__and;
|
38 |
|
|
cpu->opera_lista[cpu_1664_opera_or]=cpu_1664_opera__or;
|
39 |
|
|
cpu->opera_lista[cpu_1664_opera_eor]=cpu_1664_opera__eor;
|
40 |
|
|
cpu->opera_lista[cpu_1664_opera_mul]=cpu_1664_opera__mul;
|
41 |
|
|
cpu->opera_lista[cpu_1664_opera_plu]=cpu_1664_opera__plu;
|
42 |
|
|
cpu->opera_lista[cpu_1664_opera_sut]=cpu_1664_opera__sut;
|
43 |
|
|
cpu->opera_lista[cpu_1664_opera_sutr]=cpu_1664_opera__sutr;
|
44 |
|
|
cpu->opera_lista[cpu_1664_opera_div]=cpu_1664_opera__div;
|
45 |
|
|
cpu->opera_lista[cpu_1664_opera_shl]=cpu_1664_opera__shl;
|
46 |
|
|
cpu->opera_lista[cpu_1664_opera_shr]=cpu_1664_opera__shr;
|
47 |
|
|
cpu->opera_lista[cpu_1664_opera_sar]=cpu_1664_opera__sar;
|
48 |
|
|
|
49 |
|
|
cpu_1664_vantaje(cpu,1);
|
50 |
|
|
|
51 |
|
|
for(i=0;i<1<<cpu_1664_bitio_r;i++)
|
52 |
|
|
{
|
53 |
|
|
cpu->sinia_vantaje[i]=0;
|
54 |
|
|
cpu->sinia_usor[i]=0;
|
55 |
|
|
}
|
56 |
|
|
|
57 |
|
|
for(i=0;i<32;i++)
|
58 |
|
|
{
|
59 |
|
|
cpu->depende[i]=0;
|
60 |
|
|
}
|
61 |
|
|
|
62 |
|
|
for(i=0;i<32;i++)
|
63 |
|
|
{
|
64 |
|
|
cpu->opera_ajusta_vantaje[i]=i;
|
65 |
|
|
cpu->opera_ajusta_usor[i]=i;
|
66 |
|
|
cpu->opera_ajusta_asm[i]=i;
|
67 |
|
|
}
|
68 |
|
|
// cpu->opera_ajusta_protejeda=0;
|
69 |
|
|
// cpu->depende_opera_influe_vantaje=0;
|
70 |
|
|
// cpu->depende_opera_influe_usor=0;
|
71 |
|
|
// cpu->sinia[cpu_1664_sinia_eseta]=0;
|
72 |
|
|
|
73 |
|
|
cpu->opera_sicle=0;
|
74 |
|
|
cpu->contador_sicle=0;
|
75 |
|
|
cpu->contador_sicle_usor=0;
|
76 |
|
|
cpu->contador_sicle_usor_limite=0;
|
77 |
|
|
|
78 |
|
|
//asm
|
79 |
|
|
cpu->asm_eror=0;
|
80 |
|
|
cpu->lista_imaje_asm=lista_nova(0);
|
81 |
|
|
cpu->lista_defina_sinia=lista_nova(0);
|
82 |
|
|
cpu->lista_defina_valua=lista_nova(0);
|
83 |
|
|
cpu->lista_opera_sinia=lista_nova(0);
|
84 |
|
|
// cpu->lista_opera_ajusta=lista_nova(0);
|
85 |
|
|
cpu->lista_opera_parametre_sinia=lista_nova(0);
|
86 |
|
|
cpu->lista_asm_opera_parametre_referi=lista_nova(0);
|
87 |
|
|
cpu->lista_asm_opera_parametre_funsiona=lista_nova(0);
|
88 |
|
|
cpu->lista_asm_comanda_sinia=lista_nova(0);
|
89 |
|
|
cpu->lista_asm_comanda_funsiona=lista_nova(0);
|
90 |
|
|
cpu->lista_taxe=lista_nova(0);
|
91 |
|
|
cpu->lista_taxe_d=lista_nova(0);
|
92 |
|
|
|
93 |
|
|
cpu->lista_eticeta_cadena=lista_nova(0);
|
94 |
|
|
|
95 |
|
|
//inclui
|
96 |
|
|
cpu->lista_inclui_curso=lista_nova(0);
|
97 |
|
|
lista_ajunta__P(cpu->lista_inclui_curso, lista_nova__ccadena("/"));
|
98 |
|
|
|
99 |
|
|
|
100 |
|
|
//model
|
101 |
|
|
cpu->lista_model=lista_nova(0);
|
102 |
|
|
cpu->lista_model_sinia=lista_nova(0);
|
103 |
|
|
|
104 |
|
|
cpu->avisa__no_definida=0;
|
105 |
|
|
|
106 |
|
|
//dev
|
107 |
|
|
cpu->lista_dev_asm_desloca=lista_nova(0);
|
108 |
|
|
cpu->lista_dev_asm_cadena=lista_nova(0);
|
109 |
|
|
cpu->lista_dev_opera_cadena=lista_nova(0);
|
110 |
|
|
cpu->lista_dev_opera_parametre_referi=lista_nova(0);
|
111 |
|
|
cpu->lista_dev_opera_parametre_funsiona=lista_nova(0);
|
112 |
|
|
|
113 |
|
|
//a ordina frecuentia
|
114 |
|
|
cpu_1664_asm_opera_parametre_funsiona_ajunta(cpu, "2r6r", cpu_1664_asm_opera_parametre_funsiona__2r6r, cpu_1664_dev_opera_parametre_funsiona__2r6r);
|
115 |
|
|
cpu_1664_asm_opera_parametre_funsiona_ajunta(cpu, "8e", cpu_1664_asm_opera_parametre_funsiona__8e, cpu_1664_dev_opera_parametre_funsiona__8e);
|
116 |
|
|
cpu_1664_asm_opera_parametre_funsiona_ajunta(cpu, "8y", cpu_1664_asm_opera_parametre_funsiona__8y, cpu_1664_dev_opera_parametre_funsiona__8y);
|
117 |
|
|
cpu_1664_asm_opera_parametre_funsiona_ajunta(cpu, "8ylr", cpu_1664_asm_opera_parametre_funsiona__8ylr, cpu_1664_dev_opera_parametre_funsiona__8ylr);
|
118 |
|
|
cpu_1664_asm_opera_parametre_funsiona_ajunta(cpu, "m", cpu_1664_asm_opera_parametre_funsiona__m, cpu_1664_dev_opera_parametre_funsiona__m);
|
119 |
|
|
cpu_1664_asm_opera_parametre_funsiona_ajunta(cpu, "6r2r", cpu_1664_asm_opera_parametre_funsiona__6r2r, cpu_1664_dev_opera_parametre_funsiona__6r2r);
|
120 |
|
|
cpu_1664_asm_opera_parametre_funsiona_ajunta(cpu, "3e3e2e", cpu_1664_asm_opera_parametre_funsiona__3e3e2e, cpu_1664_dev_opera_parametre_funsiona__3e3e2e);
|
121 |
|
|
cpu_1664_asm_opera_parametre_funsiona_ajunta(cpu, "ajusta_vacua", 0, 0);
|
122 |
|
|
|
123 |
|
|
//a ordina frecuentia
|
124 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "m", cpu_1664_asm_asm_comanda__m);
|
125 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "defina", cpu_1664_asm_asm_comanda__defina);
|
126 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "ajusta", cpu_1664_asm_asm_comanda__ajusta);
|
127 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "implicada", cpu_1664_asm_asm_comanda__implicada);
|
128 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "ds", cpu_1664_asm_asm_comanda__ds);
|
129 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "d1", cpu_1664_asm_asm_comanda__d1);
|
130 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "d4", cpu_1664_asm_asm_comanda__d4);
|
131 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "do", cpu_1664_asm_asm_comanda__do);
|
132 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "d2", cpu_1664_asm_asm_comanda__d2);
|
133 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "model", cpu_1664_asm_asm_comanda__model);
|
134 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "inclui", cpu_1664_asm_asm_comanda__inclui);
|
135 |
|
|
cpu_1664_asm_asm_comanda_ajunta(cpu, "opera", cpu_1664_asm_asm_comanda__opera);
|
136 |
|
|
|
137 |
|
|
cpu_1664_asm_ajunta__ccadena(cpu, ".opera ajusta ajusta_vacua"); //opera 'falsa' - pseudo op
|
138 |
|
|
|
139 |
|
|
return cpu;
|
140 |
|
|
}
|