Ajout chaines de caractère au CA

This commit is contained in:
Faure Paul 2021-07-13 17:21:59 +02:00
parent 712e317901
commit 475fb8dbba
5 changed files with 31 additions and 21 deletions

View file

@ -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; }

View file

@ -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

View file

@ -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

View file

@ -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);

View file

@ -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);