Ajout chaines de caractère au CA
This commit is contained in:
parent
712e317901
commit
475fb8dbba
5 changed files with 31 additions and 21 deletions
|
@ -12,32 +12,33 @@ yyerror (char const *s)
|
|||
|
||||
%%
|
||||
|
||||
"ADD" { return tADD ;}
|
||||
"SOU" { return tSUB;}
|
||||
"MUL" { return tMUL; }
|
||||
"DIV" { return tDIV; }
|
||||
"INF" { return tINF; }
|
||||
"SUP" { return tSUP; }
|
||||
"EQU" { return tEQU; }
|
||||
"ADD" { return tADD; }
|
||||
"SOU" { return tSUB; }
|
||||
"MUL" { return tMUL; }
|
||||
"DIV" { return tDIV; }
|
||||
"INF" { return tINF; }
|
||||
"SUP" { return tSUP; }
|
||||
"EQU" { return tEQU; }
|
||||
|
||||
"AFC" { return tAFC; }
|
||||
"COP" { return tCPY; }
|
||||
"AFC" { return tAFC; }
|
||||
"COP" { return tCPY; }
|
||||
"AFCA" { return tAFCA; }
|
||||
|
||||
|
||||
"READ" { return tREAD; }
|
||||
"WR" { return tWR; }
|
||||
"WR" { return tWR; }
|
||||
|
||||
"JMP" { return tJMP; }
|
||||
"JMF" { return tJMF; }
|
||||
"JMP" { return tJMP; }
|
||||
"JMF" { return tJMF; }
|
||||
|
||||
"GET" { return tGET; }
|
||||
"PRI" { return tPRI; }
|
||||
"GET" { return tGET; }
|
||||
"PRI" { return tPRI; }
|
||||
"PRIC" { return tPRIC; }
|
||||
|
||||
"CALL" { return tCALL; }
|
||||
"RET" { return tRET; }
|
||||
"RET" { return tRET; }
|
||||
|
||||
"STOP" { return tSTOP; }
|
||||
"STOP" { return tSTOP; }
|
||||
|
||||
[0-9]+ { yylval.nombre = atoi(yytext); return tNB; }
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ FILE * file2;
|
|||
%token tAFC tCPY tAFCA
|
||||
%token tREAD tWR
|
||||
%token tJMP tJMF
|
||||
%token tGET tPRI
|
||||
%token tGET tPRI tPRIC
|
||||
%token tCALL tRET
|
||||
%token tSTOP
|
||||
%token<nombre> tNB
|
||||
|
@ -184,6 +184,13 @@ Instruction : tPRI tNB {increment_time();
|
|||
add_instruction(PRI, reg_src, 0, 0); // On traduit le PRI
|
||||
new_instruction(added_instruction + 1);}; // On déclare le nombre d'instruction ajoutées
|
||||
|
||||
// PRIC @ -> PRIC Ri
|
||||
Instruction : tPRIC tNB {increment_time(); // On incrémente le temps, c'est a dire, une instruction de plus a été traduite (pour la politique LRU)
|
||||
int added_instruction = 0; // On initialise le compteur d'instruction ajoutées (pour la traduction des sauts
|
||||
int reg_src = get_reg_read($2, &added_instruction); // On demande un registre en lecture pour sortir la valeur à afficher
|
||||
add_instruction(PRIC, reg_src, 0, 0); // On traduit le PRIC
|
||||
new_instruction(added_instruction + 1);}; // On déclare le nombre d'instruction ajoutées
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
2
Makefile
2
Makefile
|
@ -29,7 +29,7 @@ clean_Outputs:
|
|||
### COMPILATION ###
|
||||
###########################
|
||||
build : clean build_Tables build_Lex_Yacc
|
||||
gcc Lex_Yacc/as.tab.o Lex_Yacc/lex.yy.o Tables/tables.o -ll -o rondoudou_cross_assembleur
|
||||
gcc Lex_Yacc/as.tab.o Lex_Yacc/lex.yy.o Tables/tables.o -ly -o rondoudou_cross_assembleur
|
||||
|
||||
build_Tables: clean_Tables
|
||||
gcc -c Tables/tables.c -o Tables/tables.o
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#include "tables.h"
|
||||
#define NB_REG 16 // Nombre de registre dans le processeur
|
||||
#define MEM_SIZE 64 // Taille de la mémoire de données
|
||||
#define MEM_INST_SIZE 256 // Taille de la mémoire d'instruction
|
||||
#define MEM_INST_SIZE 512 // Taille de la mémoire d'instruction
|
||||
#define NB_BITS_INSTRUCTION 5 // Nombres de bits codant une instruction
|
||||
#define NB_BITS 8 // Taille d'un mot du processeur
|
||||
#define NB_BITS 16 // Taille d'un mot du processeur
|
||||
|
||||
|
||||
|
||||
|
@ -317,6 +317,8 @@ void write_asm(FILE * file) {
|
|||
fprintf(file, "GET %d\n", buffer[i].param1);
|
||||
} else if (buffer[i].instruction == PRI) {
|
||||
fprintf(file, "PRI %d\n", buffer[i].param1);
|
||||
} else if (buffer[i].instruction == PRIC) {
|
||||
fprintf(file, "PRIC %d\n", buffer[i].param1);
|
||||
|
||||
} else if (buffer[i].instruction == CALL) {
|
||||
fprintf(file, "CALL %d %d\n", traduction_JMP[buffer[i].param1], buffer[i].param2);
|
||||
|
|
|
@ -62,7 +62,7 @@ int flush_and_init();
|
|||
|
||||
|
||||
// Enum of the register oriented instruction (warning order correspond to the binary code)
|
||||
enum instruction_t {NOP, ADD, MUL, SUB, DIV, INF, SUP, EQU, CPY, AFC, LOAD, STORE, LOADI, STOREI, STOREA, JMP, JMZ, PRI, GET, CALL, RET, STOP};
|
||||
enum instruction_t {NOP, ADD, MUL, SUB, DIV, INF, SUP, EQU, CPY, AFC, LOAD, STORE, LOADI, STOREI, STOREA, JMP, JMZ, PRI, PRIC, GET, CALL, RET, STOP};
|
||||
|
||||
// Add a new Registers oriented instruction
|
||||
void add_instruction(enum instruction_t inst, int param1, int param2, int param3);
|
||||
|
|
Loading…
Reference in a new issue