From 85452d879d1734cb786194e7563ee0395a0f1b10 Mon Sep 17 00:00:00 2001 From: pfaure Date: Wed, 12 May 2021 21:05:29 +0200 Subject: [PATCH] CrossAssembler OKKKKKKKKKKKKKK --- as.tab.c | 613 ++++++++++++++++--------------------- as.tab.h | 15 +- as.tab.o | Bin 19272 -> 19112 bytes as.y | 1 + lex.yy.o | Bin 26864 -> 26600 bytes output.bin | 2 +- rondoudou_cross_assembleur | Bin 42416 -> 42240 bytes tables.c | 3 + tables.h | 1 + tables.o | Bin 13424 -> 13344 bytes toto.asm | 41 ++- 11 files changed, 309 insertions(+), 367 deletions(-) diff --git a/as.tab.c b/as.tab.c index 7128deb..bef2ea1 100644 --- a/as.tab.c +++ b/as.tab.c @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,14 +40,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.5.1" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -65,25 +61,15 @@ +/* Copy the first part of user declarations. */ + +#line 67 "as.tab.c" /* yacc.c:339 */ -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif # ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr # else -# define YY_NULLPTR ((void*)0) +# define YY_NULLPTR 0 # endif # endif @@ -95,8 +81,8 @@ # define YYERROR_VERBOSE 0 #endif -/* Use api.header.include to #include this header - instead of duplicating it here. */ +/* In a future release of Bison, this section will be replaced + by #include "as.tab.h". */ #ifndef YY_YY_AS_TAB_H_INCLUDED # define YY_YY_AS_TAB_H_INCLUDED /* Debug traces. */ @@ -137,15 +123,16 @@ extern int yydebug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + union YYSTYPE { -#line 1 "as.y" +#line 1 "as.y" /* yacc.c:355 */ int nombre; -#line 147 "as.tab.c" - +#line 134 "as.tab.c" /* yacc.c:355 */ }; + typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -158,92 +145,44 @@ int yyparse (void); #endif /* !YY_YY_AS_TAB_H_INCLUDED */ -/* Second part of user prologue. */ -#line 4 "as.y" +/* Copy the second part of user declarations. */ +#line 4 "as.y" /* yacc.c:358 */ #include "tables.h" -#include +#include FILE * file; FILE * file2; -#line 172 "as.tab.c" - +#line 159 "as.tab.c" /* yacc.c:358 */ #ifdef short # undef short #endif -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; #endif -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; #else -typedef short yytype_int16; +typedef unsigned short int yytype_uint16; #endif -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; #else -typedef short yytype_uint8; -#endif - -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; -#else -typedef int yytype_uint16; -#endif - -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif +typedef short int yytype_int16; #endif #ifndef YYSIZE_T @@ -251,27 +190,15 @@ typedef int yytype_uint16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned +# define YYSIZE_T unsigned int # endif #endif -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - -/* Stored state numbers (used for stacks). */ -typedef yytype_int8 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -285,19 +212,30 @@ typedef int yy_state_fast_t; # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else -# define YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + #ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) # else -# define YY_ATTRIBUTE_UNUSED +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif @@ -308,13 +246,13 @@ typedef int yy_state_fast_t; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -327,20 +265,6 @@ typedef int yy_state_fast_t; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - - -#define YY_ASSERT(E) ((void) (0 && (E))) #if ! defined yyoverflow || YYERROR_VERBOSE @@ -417,17 +341,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yy_state_t yyss_alloc; + yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -440,11 +364,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYPTRDIFF_T yynewbytes; \ + YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) @@ -456,12 +380,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYPTRDIFF_T yyi; \ + YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -484,18 +408,17 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 63 +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 277 - -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ -static const yytype_int8 yytranslate[] = + as returned by yylex, without out-of-bounds checking. */ +static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -532,8 +455,8 @@ static const yytype_int8 yytranslate[] = static const yytype_uint8 yyrline[] = { 0, 24, 24, 25, 27, 34, 41, 48, 55, 62, - 69, 78, 83, 89, 97, 100, 108, 114, 122, 127, - 134, 140, 145 + 69, 78, 83, 89, 98, 101, 109, 115, 123, 128, + 135, 141, 146 }; #endif @@ -552,7 +475,7 @@ static const char *const yytname[] = # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = +static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -560,14 +483,14 @@ static const yytype_int16 yytoknum[] = }; # endif -#define YYPACT_NINF (-4) +#define YYPACT_NINF -4 -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-4))) -#define YYTABLE_NINF (-1) +#define YYTABLE_NINF -1 -#define yytable_value_is_error(Yyn) \ +#define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -586,14 +509,14 @@ static const yytype_int8 yypact[] = /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_int8 yydefact[] = +static const yytype_uint8 yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 18, 19, 0, 22, 1, 2, 0, 0, 0, 0, 0, 0, 0, 11, - 12, 13, 17, 16, 15, 20, 4, 6, 5, 7, + 12, 13, 16, 17, 15, 20, 4, 6, 5, 7, 8, 9, 10 }; @@ -612,7 +535,7 @@ static const yytype_int8 yydefgoto[] = /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int8 yytable[] = +static const yytype_uint8 yytable[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 40, @@ -636,7 +559,7 @@ static const yytype_int8 yycheck[] = /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_int8 yystos[] = +static const yytype_uint8 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, @@ -648,7 +571,7 @@ static const yytype_int8 yystos[] = }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int8 yyr1[] = +static const yytype_uint8 yyr1[] = { 0, 23, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, @@ -656,7 +579,7 @@ static const yytype_int8 yyr1[] = }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_int8 yyr2[] = +static const yytype_uint8 yyr2[] = { 0, 2, 2, 1, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 2, 3, 3, 3, 2, 2, @@ -676,22 +599,22 @@ static const yytype_int8 yyr2[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) /* Error token number */ #define YYTERROR 1 @@ -731,39 +654,37 @@ do { \ } while (0) -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { - FILE *yyoutput = yyo; - YYUSE (yyoutput); + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END } -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { - YYFPRINTF (yyo, "%s %s (", + YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - yy_symbol_value_print (yyo, yytype, yyvaluep); - YYFPRINTF (yyo, ")"); + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. @@ -772,7 +693,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -795,20 +716,20 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - int yylno = yyrline[yyrule]; + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[+yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } @@ -852,13 +773,13 @@ int yydebug; # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) +# define yystrlen strlen # else /* Return the length of YYSTR. */ -static YYPTRDIFF_T +static YYSIZE_T yystrlen (const char *yystr) { - YYPTRDIFF_T yylen; + YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -894,12 +815,12 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYPTRDIFF_T +static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYPTRDIFF_T yyn = 0; + YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) @@ -912,10 +833,7 @@ yytnamerr (char *yyres, const char *yystr) case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - else - goto append; - - append: + /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; @@ -930,10 +848,10 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (yyres) - return yystpcpy (yyres, yystr) - yyres; - else + if (! yyres) return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; } # endif @@ -946,19 +864,19 @@ yytnamerr (char *yyres, const char *yystr) *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int -yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, - yy_state_t *yyssp, int yytoken) +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) { + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat: reported tokens (one for the "unexpected", - one per "expected"). */ + /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Actual size of YYARG. */ + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ int yycount = 0; - /* Cumulated lengths of YYARG. */ - YYPTRDIFF_T yysize = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then @@ -985,9 +903,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, */ if (yytoken != YYEMPTY) { - int yyn = yypact[+*yyssp]; - YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - yysize = yysize0; + int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { @@ -1012,12 +928,11 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYPTRDIFF_T yysize1 - = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } } } @@ -1029,7 +944,6 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, case N: \ yyformat = S; \ break - default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -1040,13 +954,10 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } { - /* Don't count the "%s"s in the final size, but reserve room for - the terminator. */ - YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } if (*yymsg_alloc < yysize) @@ -1072,8 +983,8 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } else { - ++yyp; - ++yyformat; + yyp++; + yyformat++; } } return 0; @@ -1116,7 +1027,7 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -1128,16 +1039,16 @@ yyparse (void) to reallocate them elsewhere. */ /* The state stack. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYPTRDIFF_T yystacksize; + YYSIZE_T yystacksize; int yyn; int yyresult; @@ -1151,7 +1062,7 @@ yyparse (void) /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -1172,54 +1083,46 @@ yyparse (void) yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; - /*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | +| yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ -yynewstate: + yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - -/*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END + yysetstate: + *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; -#else { /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; + YYSIZE_T yysize = yyssp - yyss + 1; -# if defined yyoverflow +#ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ - yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); + yyss = yyss1; yyvs = yyvs1; } -# else /* defined YYSTACK_RELOCATE */ +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -1228,43 +1131,42 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yy_state_t *yyss1 = yyss; + yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif +#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; - /*-----------. | yybackup. | `-----------*/ yybackup: + /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -1314,13 +1216,15 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END - /* Discard the shifted token. */ - yychar = YYEMPTY; goto yynewstate; @@ -1335,7 +1239,7 @@ yydefault: /*-----------------------------. -| yyreduce -- do a reduction. | +| yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -1355,215 +1259,215 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 4: -#line 27 "as.y" - {increment_time(); + case 4: +#line 27 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_src1 = get_reg_read((yyvsp[-1].nombre), &added_instruction); int reg_src2 = get_reg_read((yyvsp[0].nombre), &added_instruction); int reg_dest = get_reg_write((yyvsp[-2].nombre), &added_instruction); add_instruction(MUL, reg_dest, reg_src1, reg_src2); new_instruction(added_instruction + 1);} -#line 1368 "as.tab.c" +#line 1272 "as.tab.c" /* yacc.c:1646 */ break; case 5: -#line 34 "as.y" - {increment_time(); +#line 34 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_src1 = get_reg_read((yyvsp[-1].nombre), &added_instruction); int reg_src2 = get_reg_read((yyvsp[0].nombre), &added_instruction); int reg_dest = get_reg_write((yyvsp[-2].nombre), &added_instruction); add_instruction(ADD, reg_dest, reg_src1, reg_src2); new_instruction(added_instruction + 1);} -#line 1380 "as.tab.c" +#line 1284 "as.tab.c" /* yacc.c:1646 */ break; case 6: -#line 41 "as.y" - {increment_time(); +#line 41 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_src1 = get_reg_read((yyvsp[-1].nombre), &added_instruction); int reg_src2 = get_reg_read((yyvsp[0].nombre), &added_instruction); int reg_dest = get_reg_write((yyvsp[-2].nombre), &added_instruction); add_instruction(DIV, reg_dest, reg_src1, reg_src2); new_instruction(added_instruction + 1);} -#line 1392 "as.tab.c" +#line 1296 "as.tab.c" /* yacc.c:1646 */ break; case 7: -#line 48 "as.y" - {increment_time(); +#line 48 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_src1 = get_reg_read((yyvsp[-1].nombre), &added_instruction); int reg_src2 = get_reg_read((yyvsp[0].nombre), &added_instruction); int reg_dest = get_reg_write((yyvsp[-2].nombre), &added_instruction); add_instruction(SUB, reg_dest, reg_src1, reg_src2); new_instruction(added_instruction + 1);} -#line 1404 "as.tab.c" +#line 1308 "as.tab.c" /* yacc.c:1646 */ break; case 8: -#line 55 "as.y" - {increment_time(); +#line 55 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_src1 = get_reg_read((yyvsp[-1].nombre), &added_instruction); int reg_src2 = get_reg_read((yyvsp[0].nombre), &added_instruction); int reg_dest = get_reg_write((yyvsp[-2].nombre), &added_instruction); add_instruction(INF, reg_dest, reg_src1, reg_src2); new_instruction(added_instruction + 1);} -#line 1416 "as.tab.c" +#line 1320 "as.tab.c" /* yacc.c:1646 */ break; case 9: -#line 62 "as.y" - {increment_time(); +#line 62 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_src1 = get_reg_read((yyvsp[-1].nombre), &added_instruction); int reg_src2 = get_reg_read((yyvsp[0].nombre), &added_instruction); int reg_dest = get_reg_write((yyvsp[-2].nombre), &added_instruction); add_instruction(SUP, reg_dest, reg_src1, reg_src2); new_instruction(added_instruction + 1);} -#line 1428 "as.tab.c" +#line 1332 "as.tab.c" /* yacc.c:1646 */ break; case 10: -#line 69 "as.y" - {increment_time(); +#line 69 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_src1 = get_reg_read((yyvsp[-1].nombre), &added_instruction); int reg_src2 = get_reg_read((yyvsp[0].nombre), &added_instruction); int reg_dest = get_reg_write((yyvsp[-2].nombre), &added_instruction); add_instruction(EQU, reg_dest, reg_src1, reg_src2); new_instruction(added_instruction + 1);} -#line 1440 "as.tab.c" +#line 1344 "as.tab.c" /* yacc.c:1646 */ break; case 11: -#line 78 "as.y" - {increment_time(); +#line 78 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_dest = get_reg_write((yyvsp[-1].nombre), &added_instruction); add_instruction(AFC, reg_dest, (yyvsp[0].nombre), 0); new_instruction(added_instruction + 1);} -#line 1450 "as.tab.c" +#line 1354 "as.tab.c" /* yacc.c:1646 */ break; case 12: -#line 83 "as.y" - {increment_time(); +#line 83 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_src = get_reg_read((yyvsp[0].nombre), &added_instruction); int reg_dest = get_reg_write((yyvsp[-1].nombre), &added_instruction); add_instruction(CPY, reg_dest, reg_src, 0); new_instruction(added_instruction + 1);} -#line 1461 "as.tab.c" +#line 1365 "as.tab.c" /* yacc.c:1646 */ break; case 13: -#line 89 "as.y" - {increment_time(); +#line 89 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_aux = get_reg_write(-1, &added_instruction); add_instruction(AFC, reg_aux, (yyvsp[0].nombre), 0); add_instruction(STOREA, (yyvsp[-1].nombre), reg_aux, 0); + unlink((yyvsp[-1].nombre)); new_instruction(added_instruction + 2);} -#line 1472 "as.tab.c" +#line 1377 "as.tab.c" /* yacc.c:1646 */ break; case 14: -#line 97 "as.y" - {increment_time(); +#line 98 "as.y" /* yacc.c:1646 */ + {increment_time(); add_instruction(JMP, (yyvsp[0].nombre), 0, 0); new_instruction(1);} -#line 1480 "as.tab.c" +#line 1385 "as.tab.c" /* yacc.c:1646 */ break; case 15: -#line 100 "as.y" - {increment_time(); +#line 101 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_src = get_reg_read((yyvsp[-1].nombre), &added_instruction); int reg_aux = get_reg_write(-1, &added_instruction); add_instruction(SUB, reg_aux, reg_aux, reg_src); add_instruction(JMZ, (yyvsp[0].nombre), 0, 0); new_instruction(added_instruction + 2);} -#line 1492 "as.tab.c" +#line 1397 "as.tab.c" /* yacc.c:1646 */ break; case 16: -#line 108 "as.y" - {increment_time(); +#line 109 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_addr = get_reg_read((yyvsp[0].nombre), &added_instruction); int reg_dest = get_reg_write((yyvsp[-1].nombre), &added_instruction); add_instruction(LOADI, reg_dest, reg_addr, 0); new_instruction(added_instruction + 1);} -#line 1503 "as.tab.c" +#line 1408 "as.tab.c" /* yacc.c:1646 */ break; case 17: -#line 114 "as.y" - {increment_time(); +#line 115 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_addr = get_reg_read((yyvsp[-1].nombre), &added_instruction); int reg_value = get_reg_read((yyvsp[0].nombre), &added_instruction); add_instruction(STOREI, reg_addr, reg_value, 0); new_instruction(added_instruction + 1);} -#line 1514 "as.tab.c" +#line 1419 "as.tab.c" /* yacc.c:1646 */ break; case 18: -#line 122 "as.y" - {increment_time(); +#line 123 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_dest = get_reg_write((yyvsp[0].nombre), &added_instruction); add_instruction(GET, reg_dest, 0, 0); new_instruction(added_instruction + 1);} -#line 1524 "as.tab.c" +#line 1429 "as.tab.c" /* yacc.c:1646 */ break; case 19: -#line 127 "as.y" - {increment_time(); +#line 128 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = 0; int reg_src = get_reg_read((yyvsp[0].nombre), &added_instruction); add_instruction(PRI, reg_src, 0, 0); new_instruction(added_instruction + 1);} -#line 1534 "as.tab.c" +#line 1439 "as.tab.c" /* yacc.c:1646 */ break; case 20: -#line 134 "as.y" - {increment_time(); +#line 135 "as.y" /* yacc.c:1646 */ + {increment_time(); print(); int added_instruction = flush_and_init(file); print(); add_instruction(CALL, (yyvsp[-1].nombre), (yyvsp[0].nombre), 0); new_instruction(added_instruction + 1);} -#line 1545 "as.tab.c" +#line 1450 "as.tab.c" /* yacc.c:1646 */ break; case 21: -#line 140 "as.y" - {increment_time(); +#line 141 "as.y" /* yacc.c:1646 */ + {increment_time(); int added_instruction = flush_and_init(file); add_instruction(RET, 0, 0, 0); new_instruction(added_instruction + 1);} -#line 1554 "as.tab.c" +#line 1459 "as.tab.c" /* yacc.c:1646 */ break; case 22: -#line 145 "as.y" - {increment_time(); +#line 146 "as.y" /* yacc.c:1646 */ + {increment_time(); add_instruction(STOP, (yyvsp[0].nombre), 0, 0); new_instruction(1);} -#line 1562 "as.tab.c" +#line 1467 "as.tab.c" /* yacc.c:1646 */ break; -#line 1566 "as.tab.c" - +#line 1471 "as.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -1588,13 +1492,14 @@ yyreduce: /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; @@ -1626,7 +1531,7 @@ yyerrlab: { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; @@ -1677,10 +1582,12 @@ yyerrlab: | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -1742,7 +1649,6 @@ yyacceptlab: yyresult = 0; goto yyreturn; - /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -1750,7 +1656,6 @@ yyabortlab: yyresult = 1; goto yyreturn; - #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | @@ -1761,10 +1666,6 @@ yyexhaustedlab: /* Fall through. */ #endif - -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -1781,7 +1682,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[+*yyssp], yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -1794,7 +1695,7 @@ yyreturn: #endif return yyresult; } -#line 149 "as.y" +#line 150 "as.y" /* yacc.c:1906 */ int main(void) { diff --git a/as.tab.h b/as.tab.h index 166abd1..bd925a8 100644 --- a/as.tab.h +++ b/as.tab.h @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,9 +30,6 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - #ifndef YY_YY_AS_TAB_H_INCLUDED # define YY_YY_AS_TAB_H_INCLUDED /* Debug traces. */ @@ -74,15 +70,16 @@ extern int yydebug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + union YYSTYPE { -#line 1 "as.y" +#line 1 "as.y" /* yacc.c:1909 */ int nombre; -#line 84 "as.tab.h" - +#line 81 "as.tab.h" /* yacc.c:1909 */ }; + typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 diff --git a/as.tab.o b/as.tab.o index 5d530ef6228c15c97174978b44b7247b81a1f979..a3caabd7a4a842919669463f26df44f1de947537 100644 GIT binary patch literal 19112 zcmd^`f0R^3cE_t{h93gbg93sgJ`r>P89@92h=gB_jSGkaxDauNo|zt)Fig*OzvhR^ zf)1_pKKnot$3r&i@f)_yqHAH81mdX9ryVZTC zrXOyIf8?ChVcw5V-FNF-x9Ziadav0YS-h|$6jCOI)NEBaGgPU^7Z#4^=)*axT!q!j zX!hTu*=_CF^e55m%EM7F(jLu5I-@Py4y#*V*SRgn9kS@mrcaVZyB9eb-5bpfeFILS zxjuU54J~Qec5?Xkvlw*r%jazCjAq}9W?zfuu7c@4Y}&DjdgN@$Nh+~3`w!9Vf%YGE zcX#6~ntk(?@y2S;TT%pROCODTexcb{e|{F3?MHQ^x$9`_JMO4NEyB;Mz1c_?8+$9e zSOAqIG_*w8OJE(nHga^+!Mx`;Um0M$6$DH{oFE{(@`x8X60JSNl?*>uRuX=$4RI^R zvyqd8bInvaj@C-VB>P1%MF%1$P?2MQP8%Ea3KN=n#Tp>n_y#3%?!uokBZsj720`A}2!R_S(qF@Vzl=t3qUC|Dc}JsnP>Y z`y(dWRi@4Tp7H8Y0E$$nkd2Pvi@ELh#l@Jy?>yc{?(3pn*|-W+pURusb|ACn>+WuZ z<3MIDA4PMSIp2`4Y~}=!sORspnNFPLGKac!o`Q*&(YtJ>Kh6$h%4v6yoaHOx7^Tz& z!<5mh3m(WU&I?#(j&vBbD1Agx?(XOxZP5x!JbeY-CZ0a8&z92>3XX=_qPb(nW9VgcP&S|q9NZp?>nQ*&-?dVthj$}RPF!Oqa}U?GSmG6 z^iCAO-DHNYz8j{>=s1`PbNRg*g*y^wqmGi`k*qik?^O?rM1%IThiZtLVBtet)yZg8gmT%nCAUc^TWT@Xoo^#eB^zou|?> z^YR@dpKbv1*82u146#|=+0B*P7ZvVJPv50I^TRuzMYr%eLH_ZI@XE1LRSh8s{C`p zuT4nAPlb1tkvKn?v%4}P zmM3u#`flnO3aICS{NUx+C94N68pbeKmQjz#-qV52mLI#2PWE(!ig!1wQsJGe2kD-P znpq)&DMs>rc-T+Whk6#mqkunBhYoqv)C^@rP+y^pIDvcyz(99Tc^MFrTN)_0s^6JK_gQj$I=TA_`GIm@g2Wsw zy;k`1G9V-u!%6YZ@JQb?llwS1KAqer3i*L@pN7O7EWK9v^D-bLmox>)JxMh=lUwZp za(p_u4;S(S7f&kbeflU>uO{(_ZBpGR9T#w zBJ!2xVE7unR%tWX$mn6iW3w5nOUzjP4BfefAek5|UEt5j6GDvDhSpXXM33FxXPa8M%+|4cv(?& z`u|-14NR_e0ZH;_r*|Gl@8??eSZAyy8=CxLjrrAKS{LgHx0w>t!c@afGAg|M$ZH&F zy)ejrfTjFTP?j}=_odLFw*tl43oCz}XlBpnS^4`9QDZ^@-ZzB~`AYu0={9#hPWUbp#PkG=RC+z}Aj(%wslF}k0OxS?nv>rV3H@hxk|L3-^- zOGvz_@t2Ui)Ji+P19Tq0h5Xl#g%0E!mZoQ$$Zrpuqx6JhpVCd~uNTeI@=fys^KYmr z3QMd#2Qtg3W*ByhM!{OJySKFHNQC?~r`qy8UVLt!SF9aph0+s>aUEP8QT-l3g?Hyj z05@s$TK(oMyz^pRiN(cw2X!)Z%51(??{}bsJqcJwdvpzY?V9f*ep8wNg?E-yz>9X& z-yWki?-$e_d+hGY3r^$XJGdFS4*J#f$#w`Tb~7SO+!Lo#(@}%1B0}L(9h0%}_0K6( zs^cP@b2}G$if@1wobMm~bFqK;E&a2{yAAyUp;vEO^BHcAKX|~%M{iBh=%*+O9dkvy zS+_mC0=FCfV`{K~hUboye#*R=ouNCHe&u!oy(&LXLPVq9lFqv5v_bkUuiHlt!~AK0 zU*Cu?08w*S`Y(2hr!^`|zA<(Cj(c){Ha6Z=r{c+EBB{ov zo9g2A4NdVn*{c4NJ)8h9zWuePo4lmsKqy!?}yeV-?Pqueg!&m(EjTW3{#MW>+msCe|fm z8#l()qNbFaOxL;%i6)_3AO8MSx9VBPuJF0Pr)p9y&l@rF{0l~PUD(w%x~r?}BIn{U zmy8`pMjOY0@Se}{(?^kzhqI*&R??^LK~NlB>8Po<@$CHN~T4VAcw4e=(`jSH&(mB zX-aHX&bT_`pekOMu5D;q=cIIQ%~mIwZj6(GQ_)C$&KcL39zSz{avWzYvFjYQAl?{v z=>oWg%Op;m=2$WnAHYSV8g7d_4NbMlcq|pKbKC^H3{Vls;i6m=F+f$tV|5@gG9tk< z9kn#E*@?Lhb$=&OPfnWCZsh>AG`_|4O`L|5TE4!aUQ3uX+Zj97xlX0FHo37aj(@*I zaM#Rq>KanDu_U}JCe4ZFW}I$}Z%ib&I`J**W9gJjx7GZ{c&sViEU$4I6NwG6^(3#5 zYpyq;`%do)sN%KAU$&&orls}S z)E`ZqUODB;@jhkISe77#ZmUwEE#;vL2KDQ|ho%jqh~W=uG&XYwm)~77|Lnf2$$(Cg zHw&Cn1{;%KvO^mne+@XLJF&^<-;vM11Dw+Nn5LNg(qSPO;Q9xUNogB4Cck7${`!}| zDV1W}H~FQfhMDV+=v<}J*qi*4W_>+p_1Zy7nfk4sN!gjDMStOdVYSD=n!l`+JQYi& zNGNbunhLJ3s^cli7~P5n)&!fUpk32hY;{4i%Ph>^GVDdehwIZ zHS=obriQbb*H}Etd}3hQ*Jf$Ib5KrF9ue`VXeg*h?h`~NxHAn z$#&-ET=!98_<{%fM`(|9r@vDV(H?v(yV8A<*w2{HX8pP^@-?Ljt=2o0s)4;Bky3@1 zcRdqcI1Eu=bmN{vGW-2>T#WyMI9_+z=_3Ng_`e14_5l7L0sKqi&|`YE*`EsFeJGB_ z><0z#p~TOj_`k?;*7r2|9!0!Zy)Fsh69V|;0De^fUl71=3gFcNJQ2XR2k^%O;(vF5 zeQN-JFo6GzIO4p21QkR{kBzi{CcyrM0FGxwv36+-;BNL)NNYO4i6`Lz) zQ=Qtnu_n=2y(!k1j#oF+lnEXUEu3S*R>)3bB3Cf4i~Cb{Ro_6RVRMD5zJBqI^X4wD zzH#Bg<&hQDE9TBy9I00I+G9QK({8Owxpg#+QuUjY4Z41H@tX8HD!z7oEJ?dY5=FZv zvVmwl?Nb|Ljg5&~%&Tgfx2pPN9Mx-#Z&7*AN!Cw@V( zy1MEHvC3$QZ|-rPZlXAEQ1y-J)cWdJ6O0=W71BXVr0Qxtd#$crzoEK5*3d|bXbM%I zXr?(ZRfuL-N*7a&NtS<9o2ZLdZ;aKhNAppdiwz~*))?F9=T16R0a60T(=f&3`YnKz z4ByJU(Z_kdo%tr_7>_X48~>odLK!Tr(>Cf2z z3XqcR=W`$D{roBW`I@<{vz+b=B-_u0%x(R1ggxSh@eyg2#n*7T7=Ms#{}_J^ho1-7 z{$A#`&c}qkL-r;PPY4b_ud^SF8%VaFPRqUv!YK9Sy{+^70Dc*BJ3hAvd+2$W^~41q zL)_?Z7Tgj1cERE21NO6vxm~Z_!e09M>j3_&@FV+YC6|NjF+$G_!KMEtfgxJSFId$r0|~V+BV% zO?@W|F7?b5+!6Lm1&9ChSttKbuapIYHZ>S+kzEde|$xYWN_a7UE;gy7JB zIqUyh=C=NqguT@HRsjDe!QtP;`E$Xg&Q8Il&ThfsXCCY9%S$ZNzGfUampRO2e>h** zOaGS%K9;UAI;RUR?IXg!93O5M_R#qfgi(6P;&(9rXTfD0jtcJ3^+wO9g2VqZj>B&( zZsPC_b2|NU#5&En>{ zd0226x6!TLqVTvVu!Jdj*$z+60$+jt1~DUUEaf)Kek2)H7XhspopZ zCyKZw1ebbt2k>VEmwG-FTAMh!DT$d{L;f7XQl}*%dHCF zHG)e$KNMW*X%$@Rc|mX)|09A+J;w!?<$fc$EcX)p`ihc0&dd+s^@7WCHwiAw%?K{b z{i)!xUVksR^#8Ho(*I|IOaFuM)3qY?nj*OLKSyxs|3<;3|J8y|rE<)8xRyEQ4;Ki& zQP^K0_%^|%pGO6kI-eC>>U>>rsq<~-ww@1#{S`vbmx9Z3`{EaKl+aIPx%7=$CvaKr zRKca6YXz5n7BGj-G4yBRd86Qt;5Q47dD?0SpmeLn%{=x`n8QrY=kY(+kWeoC%qqp1 zQo96q=-lXeIDkJX{L6W4yRet_x|~1E+2t;_xOv~P%i?BT@RY^Py5N0_{{RJ1`do0i z{^|_iefUQLxLn$Y1xMUWd}atfPVjjFe39Vr6XSMV&K#%Hgr6E=FZDDA@Vf*bEByHX zlc><{OF^lhDJvqV0kUtaW zw*;5m$|3iYy`2SLH*gwoV!~8u4@saH^UvTXo z29*BT;``apL(FkHp8kxUeS%*p_#2j=Q7DAcI~E_!{5|34YO*u_4-0$wT>DqS;llX; zwZ+G?|Be9vUkLkAqTJsJevRO2B%M$~xTKyw%n_gI^k?)B5cZb}K16WoXQc2mL)bgQ zUh1q6_A`b3``m8OiN7m(eUAURf@Juo%#T?7C%hg$YVjol{p&xmxEkd1c8fp5{J6#I z&-U$4SbXGQpP#h&kC}H`+^iG2EdG4h_oE-KbZF}PpUlg+Ul{(EJWuU!@$o#*8)Wh4 znU`DK;d#tZi)WdSuy}}{)29C#Ju8@VEfik=;?isQJutsU%JW&wxf*#sk2!beJYT}x z;R0|9|5eN@EdG7wQ!KuQIr==3@e^Y{N7DkYXCAfq2Ik8w-pqWJ#na5!TKqQV>n*;6 zd9%gw{TpeEzsu|YG4mZ3-_3lN#qVRj$Krp%e6PhHV*aqjA7%cy#ed5DX^TI_e4oYf z-5se-Zwv8%k@-Q3zroyLZu%jgsyPdpGIt*PEkcyfIek(oYaoWnIjTsmhvEN>yr_O!!2f;1IYnnW&@> z;`F7wvNl1#pQZ2jl}!mZUU~h}m6PVlc7ww{gclOnEXn@`R3O z(_gXj%i)-k`TmRY@hQVD|7Kz+e+vD{v=@_4N)!BDe#_O-*8o=2pJ90;I(Ut*mkh_Y zt;@`g|3SXK({f<+8=RnnV)fq<@hu)_L)0Hr26MgXf6!x>jZ4}bY-t_L?T^Pk=12DR ln6}t$M@U7{u_^tFRblItenVFL`ih16a`hvBm*3jg|2LcR@6`YR literal 19272 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 literal 26864 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 ZO4Rioekx?To=TDr(f|ocCLoJ$rU0{q6sp=bZCA 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 literal 42416 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 diff --git a/tables.c b/tables.c index 29667bc..e272fb6 100644 --- a/tables.c +++ b/tables.c @@ -282,6 +282,9 @@ int get_reg_read(int adresse, int * added_instruction) { } } +void unlink(int adresse) { + set_registre(adresse, -1); +} int flush_and_init() { int i; diff --git a/tables.h b/tables.h index 3f93738..43a62d1 100644 --- a/tables.h +++ b/tables.h @@ -25,6 +25,7 @@ void print(); void increment_time(); int get_reg_read(int adresse, int * added_instruction); int get_reg_write(int adresse, int * added_instruction); +void unlink(int adresse); int flush_and_init(); void new_instruction(int nb_inst); void write_asm(FILE * file); diff --git a/tables.o b/tables.o index 405ee37ca0ffc58e0ba3aab2b2b9f2290cf3ee18..1d4ba2558a004e1259949b2fb9f724bd171c0a31 100644 GIT binary patch literal 13344 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 E16kptHUIzs diff --git a/toto.asm b/toto.asm index beb22ea..346d766 100644 --- a/toto.asm +++ b/toto.asm @@ -1,4 +1,40 @@ -JMP 1 +JMP 37 +AFC 1 1 +COP 2 0 +AFC 3 1 +MUL 1 3 1 +ADD 1 2 1 +READ 1 1 +PRI 1 +AFC 1 0 +COP 2 0 +AFC 3 1 +MUL 1 3 1 +ADD 1 2 1 +AFC 2 14 +WR 1 2 +AFC 1 2 +COP 0 1 +RET +AFC 1 0 +COP 2 0 +AFC 3 1 +MUL 1 3 1 +ADD 1 2 1 +READ 1 1 +PRI 1 +AFC 1 1 +COP 2 0 +AFC 3 1 +MUL 1 3 1 +ADD 1 2 1 +AFC 2 10 +WR 1 2 +COP 1 0 +CALL 1 1 +AFC 1 1 +COP 0 1 +RET AFC 2 0 AFCA 3 0 AFC 5 1 @@ -13,6 +49,8 @@ MUL 3 6 3 ADD 3 4 3 AFC 5 12 WR 3 5 +AFCA 4 0 +CALL 18 4 AFC 4 0 AFCA 5 0 AFC 6 1 @@ -21,3 +59,4 @@ ADD 4 5 4 READ 4 4 PRI 4 STOP 0 +