Merge du compilateur sécurisé et non sécurisé (différence mineure ne justifiant pas deux branches, remplacé par un define et deux tests)
This commit is contained in:
parent
c33c308015
commit
b501ce3389
1 changed files with 11 additions and 4 deletions
|
@ -20,6 +20,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "../Tables/Instructions/tab_instruc.h"
|
#include "../Tables/Instructions/tab_instruc.h"
|
||||||
#define TAILLE 1024
|
#define TAILLE 1024
|
||||||
|
#define SECURISED (0)
|
||||||
|
|
||||||
struct type_t type_courant;
|
struct type_t type_courant;
|
||||||
struct type_t return_type_fonc;
|
struct type_t return_type_fonc;
|
||||||
|
@ -217,11 +218,17 @@ Instruction : Print tPV;
|
||||||
/*************************************/
|
/*************************************/
|
||||||
/*************************************/
|
/*************************************/
|
||||||
|
|
||||||
Invocation : tID tOBRACE {push("0_TEMPORARY_CTX", 0, integer); // On reserve la place du contexte
|
Invocation : tID tOBRACE {if (!SECURISED) {
|
||||||
push("0_TEMPORARY_ADDR_RT", 0, pointer); // On reserve la place de l'adresse de retour
|
push("0_TEMPORARY_CTX", 0, integer); // On reserve la place du contexte
|
||||||
|
push("0_TEMPORARY_ADDR_RT", 0, pointer); // On reserve la place de l'adresse de retour
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Params tCBRACE {struct fonction_t fonc = get_fonction($1); // On récupère la fonction
|
Params tCBRACE {struct fonction_t fonc = get_fonction($1); // On récupère la fonction
|
||||||
multiple_pop($4 + 2); // On pop les paramètres de la table des symboles
|
if (!SECURISED) {
|
||||||
|
multiple_pop($4 + 2); // On pop les paramètres de la table des symboles
|
||||||
|
} else {
|
||||||
|
multiple_pop($4); // On pop les paramètres de la table des symboles
|
||||||
|
}
|
||||||
add_operation(CALL,fonc.first_instruction_line, get_last_addr(),0); // On écrit le CALL
|
add_operation(CALL,fonc.first_instruction_line, get_last_addr(),0); // On écrit le CALL
|
||||||
// On renvoi l'adresse de la valeur retour de la fonction
|
// On renvoi l'adresse de la valeur retour de la fonction
|
||||||
if (fonc.return_type.pointeur_level > 0 || fonc.return_type.isTab) {
|
if (fonc.return_type.pointeur_level > 0 || fonc.return_type.isTab) {
|
||||||
|
@ -688,6 +695,6 @@ SuiteInitTab : {$$ = 0;
|
||||||
|
|
||||||
%%
|
%%
|
||||||
void main(void) {
|
void main(void) {
|
||||||
init();
|
init();
|
||||||
yyparse();
|
yyparse();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue