- Add the MIPS assembler written by Pirouz B. in the Alliance CVS tree

This commit is contained in:
Ludovic Jacomme 2004-05-23 13:57:39 +00:00
parent 0c45b59ddc
commit e9398c13fd
11 changed files with 2952 additions and 0 deletions

View File

@ -0,0 +1 @@
SUBDIRS = src

View File

@ -0,0 +1,40 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/mips_globals.c)
MIPS_ASM_MAJOR_VERSION=1
MIPS_ASM_MINOR_VERSION=0
MIPS_ASM_VERSION=$MIPS_ASM_MAJOR_VERSION.$MIPS_ASM_MINOR_VERSION
AC_SUBST(MIPS_ASM_MAJOR_VERSION)
AC_SUBST(MIPS_ASM_MINOR_VERSION)
AC_SUBST(MIPS_ASM_VERSION)
# For automake.
VERSION=$MIPS_ASM_VERSION
PACKAGE=mips_asm
dnl Initialize automake stuff
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
dnl Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_RANLIB
ALC_CXX_PROBLEMATIC_OLD_VERSION
AM_PROG_LEX
AC_PROG_YACC
AC_PROG_MAKE_SET
dnl Checks for libraries.
dnl Check for -lm librarie. These should always be present.
AC_CHECK_LIB(m, exp)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AM_ALLIANCE
AC_OUTPUT([
Makefile
src/Makefile
])

View File

@ -0,0 +1,23 @@
## Process this file with automake to produce Makefile.in
YACC = @YACC@ -d
INCLUDES = -I$(top_srcdir)/src
AM_CXXFLAGS = @ALLIANCE_CFLAGS@
AM_CFLAGS = @ALLIANCE_CFLAGS@
bin_PROGRAMS = mips_asm
mips_asm_LDADD = @ALLIANCE_LIBS@ \
-lBeh -lMut
mips_asm_SOURCES = mips_defs.h mips_y.y mips_l.l mips_globals.c mips_lex.h mips_type.h mips_yacc.h mips_util.c
mips_y.c mips_y.h : $(srcdir)/mips_y.y
$(YACC) -d $(YFLAGS) $(srcdir)/mips_y.y && sed -e "s/yy/mipsyy/g" -e "s/YY/mipsYY/g" y.tab.c > mips_y.c && sed -e "s/yy/mipsyy/g" -e "s/YY/mipsYY/g" y.tab.h > mips_y.h
mips_l.c : $(srcdir)/mips_l.l mips_y.h
$(LEX) -t $(srcdir)/mips_l.l | sed -e "s/yy/mipsyy/g" -e "s/YY/mipsYY/g" > mips_l.c
CLEANFILES = y.tab.c y.tab.h mips.c

View File

@ -0,0 +1,169 @@
/*
* This file is part of the Alliance CAD System
* Copyright (C) Laboratoire LIP6 - Département ASIM
* Universite Pierre et Marie Curie
*
* Home page : http://www-asim.lip6.fr/alliance/
* E-mail : mailto:alliance-users@asim.lip6.fr
*
* This progam is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* Alliance VLSI CAD System is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the GNU C Library; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* ###--------------------------------------------------------------### */
/* file : mips_defs.h */
/* date : Dec 6 1999 */
/* version : v0.3 */
/* author : Pirouz BAZARGAN SABET */
/* description : MIPS assembler - defines (operation codes) */
/* ###--------------------------------------------------------------### */
#define MPS_PLSDFN 0 /* add */
#define MPS_MNSDFN 1 /* subtract */
#define MPS_SHLDFN 2 /* shift left */
#define MPS_SHRDFN 3 /* shift right */
#define MPS_ORDFN 4 /* logical or */
#define MPS_ANDDFN 5 /* logical and */
#define MPS_XORDFN 6 /* logical exclusive or */
#define MPS_MULDFN 7 /* multiply */
#define MPS_DIVDFN 8 /* divide */
/* ### ---------------------------------------------------- ### */
/* instruction set table: */
/* Opcods in lower case are MIPS instructions */
/* Opcods in upper case are application specific */
/* */
/* */
/* primary opcod (31 downto 26): */
/* | 0 1 2 3 4 5 6 7 */
/* --+-----+-----+-----+-----+-----+-----+-----+-----+ */
/* 0 |speci|bcond| j | jal | beq | bne |blez |bgtz | */
/* 1 |addi |addui|slti |sltui|andi | ori |xori | lui | */
/* 2 |cop0 | + | + | + | | + | | | */
/* 3 | | | | | | | | | */
/* 4 | lb | lh | + | lw | lbu | lhu | + |SWAP | */
/* 5 | sb | sh | + | sw | | | + | | */
/* 6 | + | + | + | + |Seqi |Snei |Slei |Sgti | */
/* 7 | + | + | + | + |Sgei |Sgeui|Sleui|Sgtui| */
/* */
/* */
/* special opcod extension (5 downto 0): */
/* | 0 1 2 3 4 5 6 7 */
/* --+-----+-----+-----+-----+-----+-----+-----+-----+ */
/* 0 | sll | | srl | sra |sllv | |srlv |srav | */
/* 1 | jr |jalr | | |sysca|break| |SLEEP| */
/* 2 |mfhi |mthi |mflo |mtlo | | | | | */
/* 3 | + | + | + | + | | | | | */
/* 4 | add |addu | sub |subu | and | or | xor | nor | */
/* 5 | | | slt |sltu | | | | | */
/* 6 | | | | | + | + | + | + | */
/* 7 | | | | | + | + | + | + | */
/* */
/* */
/* bcond opcod extension (20 downto 16): */
/* | 0 1 2 3 4 5 6 7 */
/* --+-----+-----+-----+-----+-----+-----+-----+-----+ */
/* 0 |bltz |bgez | | | | | | | */
/* 1 | | | | | | | | | */
/* 2 |bltza|bgeza| | | | | | | */
/* 3 | | | | | | | | | */
/* */
/* */
/* cop0 opcod extension (22, 21, 16, 25, 24, 23): */
/* | 0 1 2 3 4 5 6 7 */
/* --+-----+-----+-----+-----+-----+-----+-----+-----+ */
/* 0 | mf | mt | + | + | c0 | c0 | c0 | c0 | */
/* 1 | mf | mt | + | + | c0 | c0 | c0 | c0 | */
/* 2 | | | | | c0 | c0 | c0 | c0 | */
/* 3 | | | | | c0 | c0 | c0 | c0 | */
/* 4 | + | + | | | c0 | c0 | c0 | c0 | */
/* 5 | + | + | | | c0 | c0 | c0 | c0 | */
/* 6 | | | | | c0 | c0 | c0 | c0 | */
/* 7 | | | | | c0 | c0 | c0 | c0 | */
/* */
/* */
/* c0 cop0 extension extension (4 downto 0): */
/* | 0 1 2 3 4 5 6 7 */
/* --+-----+-----+-----+-----+-----+-----+-----+-----+ */
/* 0 | + | + | + | | | | + | | */
/* 1 | + | | | | | | | | */
/* 2 |rstfe| | | | | | | | */
/* 3 | + | | | | | | | | */
/* */
/* ### ---------------------------------------------------- ### */
#define _ADD 0x00000020 /* Mips architecture */
#define _ADDI 0x20000000 /* Mips architecture */
#define _ADDU 0x00000021 /* Mips architecture */
#define _ADDIU 0x24000000 /* Mips architecture */
#define _AND 0x00000024 /* Mips architecture */
#define _ANDI 0x30000000 /* Mips architecture */
#define _BEQ 0x10000000 /* Mips architecture */
#define _BGEZ 0x04010000 /* Mips architecture */
#define _BGEZAL 0x04110000 /* Mips architecture */
#define _BGTZ 0x1C000000 /* Mips architecture */
#define _BLEZ 0x18000000 /* Mips architecture */
#define _BLTZ 0x04000000 /* Mips architecture */
#define _BLTZAL 0x04100000 /* Mips architecture */
#define _BNE 0x14000000 /* Mips architecture */
#define _BREAK 0x0000000D /* Mips architecture */
#define _J 0x08000000 /* Mips architecture */
#define _JAL 0x0C000000 /* Mips architecture */
#define _JALR 0x00000009 /* Mips architecture */
#define _JR 0x00000008 /* Mips architecture */
#define _LB 0x80000000 /* Mips architecture */
#define _LBU 0x90000000 /* Mips architecture */
#define _LH 0x84000000 /* Mips architecture */
#define _LHU 0x94000000 /* Mips architecture */
#define _LUI 0x3C000000 /* Mips architecture */
#define _LW 0x8C000000 /* Mips architecture */
#define _MFC0 0x40000000 /* Mips architecture */
#define _MFHI 0x00000010 /* Mips architecture */
#define _MFLO 0x00000012 /* Mips architecture */
#define _MTC0 0x40800000 /* Mips architecture */
#define _MTHI 0x00000011 /* Mips architecture */
#define _MTLO 0x00000013 /* Mips architecture */
#define _NOR 0x00000027 /* Mips architecture */
#define _OR 0x00000025 /* Mips architecture */
#define _ORI 0x34000000 /* Mips architecture */
#define _RSTFE 0x42000010 /* Mips architecture */
#define _SB 0xA0000000 /* Mips architecture */
#define _SH 0xA4000000 /* Mips architecture */
#define _SLEEP 0x0000000F /* Mips architecture */
#define _SLL 0x00000000 /* Mips architecture */
#define _SLLV 0x00000004 /* Mips architecture */
#define _SLT 0x0000002A /* Mips architecture */
#define _SLTI 0x28000000 /* Mips architecture */
#define _SLTU 0x0000002B /* Mips architecture */
#define _SLTIU 0x2C000000 /* Mips architecture */
#define _SRA 0x00000003 /* Mips architecture */
#define _SRAV 0x00000007 /* Mips architecture */
#define _SRL 0x00000002 /* Mips architecture */
#define _SRLV 0x00000006 /* Mips architecture */
#define _SUB 0x00000022 /* Mips architecture */
#define _SUBU 0x00000023 /* Mips architecture */
#define _SW 0xAC000000 /* Mips architecture */
#define _SWAP 0x9C000000 /* Mips architecture */
#define _SYSCALL 0x0000000C /* Mips architecture */
#define _XOR 0x00000026 /* Mips architecture */
#define _XORI 0x38000000 /* Mips architecture */
#define _NOP 0x00000001 /* Mips macro */
#define _LOADI 0x00000002 /* Mips macro */
#define _BADVADDR 8
#define _STATUS 12
#define _CAUSE 13
#define _EPC 14

View File

@ -0,0 +1,32 @@
/*
* This file is part of the Alliance CAD System
* Copyright (C) Laboratoire LIP6 - Département ASIM
* Universite Pierre et Marie Curie
*
* Home page : http://www-asim.lip6.fr/alliance/
* E-mail : mailto:alliance-users@asim.lip6.fr
*
* This progam is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* Alliance VLSI CAD System is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the GNU C Library; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* ###--------------------------------------------------------------### */
/* file : mips_globals.c */
/* date : Dec 9 1999 */
/* version : v0.3 */
/* author : Pirouz BAZARGAN SABET */
/* description : MIPS assembler - global and static variables */
/* ###--------------------------------------------------------------### */
int MPS_LINNUM = 1;

View File

@ -0,0 +1,571 @@
/*
* This file is part of the Alliance CAD System
* Copyright (C) Laboratoire LIP6 - Département ASIM
* Universite Pierre et Marie Curie
*
* Home page : http://www-asim.lip6.fr/alliance/
* E-mail : mailto:alliance-users@asim.lip6.fr
*
* This progam is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* Alliance VLSI CAD System is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the GNU C Library; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* ###--------------------------------------------------------------### */
/* file : mips_mips.lex */
/* date : Dec 6 1999 */
/* version : v0.3 */
/* author : Pirouz BAZARGAN SABET */
/* description : MIPS assembler - lex rules */
/* ###--------------------------------------------------------------### */
%{
#include <stdio.h>
#include "mut.h"
#include "mips_type.h"
#include "mips_y.h"
#include "mips_defs.h"
#include "mips_lex.h"
%}
register \$([0-9]|[12][0-9]|3[01])
digit [0-9]
hexadecimal_valu 0x[0-9a-fA-F]+
octal_valu 0o[0-7]+
binary_valu 0b[0-1]+
decimal_valu {digit}+
letter [a-zA-Z]
letter_or_digit {letter}|{digit}
ident (\.|_|{letter})(\.|_|{letter_or_digit})*
%%
\n {
/*printf ("CarriageReturn : %d\n", MPS_LINNUM);*/
MPS_LINNUM++;
return (CarriageReturn);
}
\: {
/*printf ("Colon\n");*/
return (Colon);
}
[ \t] {
/*printf ("space\n");*/
}
# {
/*printf ("Sharp\n");*/
return (Sharp);
}
\& {
/*printf ("Ampersand\n");*/
return (Ampersand);
}
\| {
/*printf ("Bar\n");*/
return (Bar);
}
\~ {
/*printf ("Tilda\n");*/
return (Tilda);
}
\^ {
/*printf ("Circomflex\n");*/
return (Circomflex);
}
\+ {
/*printf ("Plus\n");*/
return (Plus);
}
\/ {
/*printf ("Slash\n");*/
return (Slash);
}
\* {
/*printf ("Star\n");*/
return (Star);
}
\<\< {
/*printf ("DoubleLess\n");*/
return (DoubleLess);
}
\>\> {
/*printf ("DoubleGreat\n");*/
return (DoubleGreat);
}
\- {
/*printf ("Minus\n");*/
return (Minus);
}
\( {
/*printf ("LeftParen\n");*/
return (LeftParen);
}
\) {
/*printf ("RightParen\n");*/
return (RightParen);
}
\, {
/*printf ("Comma\n");*/
return (Comma);
}
{register} {
/*printf ("Register : %s\n", yytext);*/
sscanf (&yytext[1], "%lu", &yylval.valu);
return (Register);
}
{hexadecimal_valu} {
/*printf ("Literal (X) : %s\n", yytext);*/
yylval.valu = hextoint (yytext);
return (Litteral);
}
{octal_valu} {
/*printf ("Literal (O) : %s\n", yytext);*/
yylval.valu = octtoint (yytext);
return (Litteral);
}
{binary_valu} {
/*printf ("Literal (B) : %s\n", yytext);*/
yylval.valu = bintoint (yytext);
return (Litteral);
}
{decimal_valu} {
/*printf ("Literal (D) : %s\n", yytext);*/
if (sscanf (yytext, "%ld", &yylval.valu) == 0)
yylval.valu = 0;
return (Litteral);
}
\".*\" {
extern char *mips_allocstr ();
/*printf ("String : %s\n", yytext);*/
yylval.text = mips_allocstr (yytext);
return (String);
}
{ident} {
int type ;
extern char *mips_allocstr ();
yylval.text = mips_allocstr (yytext);
type = searchtype (yylval.text);
if (type == -1)
{
/*printf ("Identifier : %s\n", yytext);*/
return (Identifier);
}
else
{
/*printf ("Key Word : %s\n", yytext);*/
yylval.valu = searchvalu (yylval.text);
return (type);
}
}
\;.*$ {
/*printf ("Comment : %s\n", yytext);*/
}
%%
static int searchtype (str)
char *str;
{
extern char *mips_allocstr () ;
static ht *type_hashpt = NULL;
if (type_hashpt == NULL)
{
type_hashpt = addht (128);
addhtitem (type_hashpt, mips_allocstr ("zero" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("at" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("v0" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("v1" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("a0" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("a1" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("a2" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("a3" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("t0" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("t1" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("t2" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("t3" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("t4" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("t5" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("t6" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("t7" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("s0" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("s1" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("s2" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("s3" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("s4" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("s5" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("s6" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("s7" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("t8" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("t9" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("k0" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("k1" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("gp" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("sp" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("s8" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("ra" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r0" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r1" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r2" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r3" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r4" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r5" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r6" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r7" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r8" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r9" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r10" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r11" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r12" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r13" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r14" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r15" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r16" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r17" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r18" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r19" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r20" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r21" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r22" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r23" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r24" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r25" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r26" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r27" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r28" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r29" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r30" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("r31" ), IntegerRegister );
addhtitem (type_hashpt, mips_allocstr ("badvaddr"), CP0Register );
addhtitem (type_hashpt, mips_allocstr ("status" ), CP0Register );
addhtitem (type_hashpt, mips_allocstr ("cause" ), CP0Register );
addhtitem (type_hashpt, mips_allocstr ("epc" ), CP0Register );
addhtitem (type_hashpt, mips_allocstr (".align" ), _ALIGN );
addhtitem (type_hashpt, mips_allocstr (".ascii" ), _ASCII );
addhtitem (type_hashpt, mips_allocstr (".asciiz" ), _ASCIIZ );
addhtitem (type_hashpt, mips_allocstr (".byte" ), _BYTE );
addhtitem (type_hashpt, mips_allocstr (".bytez" ), _BYTEZ );
addhtitem (type_hashpt, mips_allocstr (".data" ), _DATA );
addhtitem (type_hashpt, mips_allocstr (".end" ), _END );
addhtitem (type_hashpt, mips_allocstr (".equ" ), _EQU );
addhtitem (type_hashpt, mips_allocstr (".global" ), _GLOBAL );
addhtitem (type_hashpt, mips_allocstr (".org" ), _ORG );
addhtitem (type_hashpt, mips_allocstr (".skip" ), _SKIP );
addhtitem (type_hashpt, mips_allocstr (".space" ), _SPACE );
addhtitem (type_hashpt, mips_allocstr (".start" ), _START );
addhtitem (type_hashpt, mips_allocstr (".text" ), _TEXT );
addhtitem (type_hashpt, mips_allocstr (".word" ), _WORD );
addhtitem (type_hashpt, mips_allocstr ("nop" ), Macro_n );
addhtitem (type_hashpt, mips_allocstr ("loadi" ), Macro_rd_longi );
addhtitem (type_hashpt, mips_allocstr ("la" ), Macro_rd_longi );
addhtitem (type_hashpt, mips_allocstr ("li" ), Macro_rd_longi );
addhtitem (type_hashpt, mips_allocstr ("add" ), Codop_rd_rs_rt );
addhtitem (type_hashpt, mips_allocstr ("addi" ), Codop_rd_rs_imd );
addhtitem (type_hashpt, mips_allocstr ("addu" ), Codop_rd_rs_rt );
addhtitem (type_hashpt, mips_allocstr ("addiu" ), Codop_rd_rs_imd );
addhtitem (type_hashpt, mips_allocstr ("and" ), Codop_rd_rs_rt );
addhtitem (type_hashpt, mips_allocstr ("andi" ), Codop_rd_rs_imd );
addhtitem (type_hashpt, mips_allocstr ("beq" ), Codop_rs_rt_labl);
addhtitem (type_hashpt, mips_allocstr ("bgez" ), Codop_rs_labl );
addhtitem (type_hashpt, mips_allocstr ("bgezal" ), Codop_rs_labl );
addhtitem (type_hashpt, mips_allocstr ("bgtz" ), Codop_rs_labl );
addhtitem (type_hashpt, mips_allocstr ("blez" ), Codop_rs_labl );
addhtitem (type_hashpt, mips_allocstr ("bltz" ), Codop_rs_labl );
addhtitem (type_hashpt, mips_allocstr ("bltzal" ), Codop_rs_labl );
addhtitem (type_hashpt, mips_allocstr ("bne" ), Codop_rs_rt_labl);
addhtitem (type_hashpt, mips_allocstr ("break" ), Codop_imd );
addhtitem (type_hashpt, mips_allocstr ("j" ), Codop_labl );
addhtitem (type_hashpt, mips_allocstr ("jal" ), Codop_labl );
addhtitem (type_hashpt, mips_allocstr ("jalr" ), Codop_od_rs );
addhtitem (type_hashpt, mips_allocstr ("jr" ), Codop_rs );
addhtitem (type_hashpt, mips_allocstr ("lb" ), Codop_rd_mem );
addhtitem (type_hashpt, mips_allocstr ("lbu" ), Codop_rd_mem );
addhtitem (type_hashpt, mips_allocstr ("lh" ), Codop_rd_mem );
addhtitem (type_hashpt, mips_allocstr ("lhu" ), Codop_rd_mem );
addhtitem (type_hashpt, mips_allocstr ("lui" ), Codop_rd_imd );
addhtitem (type_hashpt, mips_allocstr ("lw" ), Codop_rd_mem );
addhtitem (type_hashpt, mips_allocstr ("mfc0" ), Codop_rt_cp0rd );
addhtitem (type_hashpt, mips_allocstr ("mfhi" ), Codop_rd );
addhtitem (type_hashpt, mips_allocstr ("mflo" ), Codop_rd );
addhtitem (type_hashpt, mips_allocstr ("mtc0" ), Codop_rt_cp0rd );
addhtitem (type_hashpt, mips_allocstr ("mthi" ), Codop_rs );
addhtitem (type_hashpt, mips_allocstr ("mtlo" ), Codop_rs );
addhtitem (type_hashpt, mips_allocstr ("nor" ), Codop_rd_rs_rt );
addhtitem (type_hashpt, mips_allocstr ("or" ), Codop_rd_rs_rt );
addhtitem (type_hashpt, mips_allocstr ("ori" ), Codop_rd_rs_imd );
addhtitem (type_hashpt, mips_allocstr ("rfe" ), Codop_n );
addhtitem (type_hashpt, mips_allocstr ("sb" ), Codop_rt_mem );
addhtitem (type_hashpt, mips_allocstr ("sh" ), Codop_rt_mem );
addhtitem (type_hashpt, mips_allocstr ("sleep" ), Codop_n );
addhtitem (type_hashpt, mips_allocstr ("sll" ), Codop_rd_rt_sham);
addhtitem (type_hashpt, mips_allocstr ("sllv" ), Codop_rd_rt_rs );
addhtitem (type_hashpt, mips_allocstr ("slt" ), Codop_rd_rs_rt );
addhtitem (type_hashpt, mips_allocstr ("slti" ), Codop_rd_rs_imd );
addhtitem (type_hashpt, mips_allocstr ("sltiu" ), Codop_rd_rs_imd );
addhtitem (type_hashpt, mips_allocstr ("sltu" ), Codop_rd_rs_rt );
addhtitem (type_hashpt, mips_allocstr ("sra" ), Codop_rd_rt_sham);
addhtitem (type_hashpt, mips_allocstr ("srav" ), Codop_rd_rt_rs );
addhtitem (type_hashpt, mips_allocstr ("srl" ), Codop_rd_rt_sham);
addhtitem (type_hashpt, mips_allocstr ("srlv" ), Codop_rd_rt_rs );
addhtitem (type_hashpt, mips_allocstr ("sub" ), Codop_rd_rs_rt );
addhtitem (type_hashpt, mips_allocstr ("subu" ), Codop_rd_rs_rt );
addhtitem (type_hashpt, mips_allocstr ("sw" ), Codop_rt_mem );
addhtitem (type_hashpt, mips_allocstr ("swap" ), Codop_rt_mem );
addhtitem (type_hashpt, mips_allocstr ("syscall" ), Codop_n );
addhtitem (type_hashpt, mips_allocstr ("xor" ), Codop_rd_rs_rt );
addhtitem (type_hashpt, mips_allocstr ("xori" ), Codop_rd_rs_imd );
}
return (gethtitem (type_hashpt, str));
}
static int searchvalu (str)
char *str;
{
extern char *mips_allocstr () ;
static ht *valu_hashpt = NULL;
if (valu_hashpt == NULL)
{
valu_hashpt = addht (128);
addhtitem (valu_hashpt, mips_allocstr ("zero" ), 0 );
addhtitem (valu_hashpt, mips_allocstr ("at" ), 1 );
addhtitem (valu_hashpt, mips_allocstr ("v0" ), 2 );
addhtitem (valu_hashpt, mips_allocstr ("v1" ), 3 );
addhtitem (valu_hashpt, mips_allocstr ("a0" ), 4 );
addhtitem (valu_hashpt, mips_allocstr ("a1" ), 5 );
addhtitem (valu_hashpt, mips_allocstr ("a2" ), 6 );
addhtitem (valu_hashpt, mips_allocstr ("a3" ), 7 );
addhtitem (valu_hashpt, mips_allocstr ("t0" ), 8 );
addhtitem (valu_hashpt, mips_allocstr ("t1" ), 9 );
addhtitem (valu_hashpt, mips_allocstr ("t2" ), 10 );
addhtitem (valu_hashpt, mips_allocstr ("t3" ), 11 );
addhtitem (valu_hashpt, mips_allocstr ("t4" ), 12 );
addhtitem (valu_hashpt, mips_allocstr ("t5" ), 13 );
addhtitem (valu_hashpt, mips_allocstr ("t6" ), 14 );
addhtitem (valu_hashpt, mips_allocstr ("t7" ), 15 );
addhtitem (valu_hashpt, mips_allocstr ("s0" ), 16 );
addhtitem (valu_hashpt, mips_allocstr ("s1" ), 17 );
addhtitem (valu_hashpt, mips_allocstr ("s2" ), 18 );
addhtitem (valu_hashpt, mips_allocstr ("s3" ), 19 );
addhtitem (valu_hashpt, mips_allocstr ("s4" ), 20 );
addhtitem (valu_hashpt, mips_allocstr ("s5" ), 21 );
addhtitem (valu_hashpt, mips_allocstr ("s6" ), 22 );
addhtitem (valu_hashpt, mips_allocstr ("s7" ), 23 );
addhtitem (valu_hashpt, mips_allocstr ("t8" ), 24 );
addhtitem (valu_hashpt, mips_allocstr ("t9" ), 25 );
addhtitem (valu_hashpt, mips_allocstr ("k0" ), 26 );
addhtitem (valu_hashpt, mips_allocstr ("k1" ), 27 );
addhtitem (valu_hashpt, mips_allocstr ("gp" ), 28 );
addhtitem (valu_hashpt, mips_allocstr ("sp" ), 29 );
addhtitem (valu_hashpt, mips_allocstr ("s8" ), 30 );
addhtitem (valu_hashpt, mips_allocstr ("ra" ), 31 );
addhtitem (valu_hashpt, mips_allocstr ("r0" ), 0 );
addhtitem (valu_hashpt, mips_allocstr ("r1" ), 1 );
addhtitem (valu_hashpt, mips_allocstr ("r2" ), 2 );
addhtitem (valu_hashpt, mips_allocstr ("r3" ), 3 );
addhtitem (valu_hashpt, mips_allocstr ("r4" ), 4 );
addhtitem (valu_hashpt, mips_allocstr ("r5" ), 5 );
addhtitem (valu_hashpt, mips_allocstr ("r6" ), 6 );
addhtitem (valu_hashpt, mips_allocstr ("r7" ), 7 );
addhtitem (valu_hashpt, mips_allocstr ("r8" ), 8 );
addhtitem (valu_hashpt, mips_allocstr ("r9" ), 9 );
addhtitem (valu_hashpt, mips_allocstr ("r10" ), 10 );
addhtitem (valu_hashpt, mips_allocstr ("r11" ), 11 );
addhtitem (valu_hashpt, mips_allocstr ("r12" ), 12 );
addhtitem (valu_hashpt, mips_allocstr ("r13" ), 13 );
addhtitem (valu_hashpt, mips_allocstr ("r14" ), 14 );
addhtitem (valu_hashpt, mips_allocstr ("r15" ), 15 );
addhtitem (valu_hashpt, mips_allocstr ("r16" ), 16 );
addhtitem (valu_hashpt, mips_allocstr ("r17" ), 17 );
addhtitem (valu_hashpt, mips_allocstr ("r18" ), 18 );
addhtitem (valu_hashpt, mips_allocstr ("r19" ), 19 );
addhtitem (valu_hashpt, mips_allocstr ("r20" ), 20 );
addhtitem (valu_hashpt, mips_allocstr ("r21" ), 21 );
addhtitem (valu_hashpt, mips_allocstr ("r22" ), 22 );
addhtitem (valu_hashpt, mips_allocstr ("r23" ), 23 );
addhtitem (valu_hashpt, mips_allocstr ("r24" ), 24 );
addhtitem (valu_hashpt, mips_allocstr ("r25" ), 25 );
addhtitem (valu_hashpt, mips_allocstr ("r26" ), 26 );
addhtitem (valu_hashpt, mips_allocstr ("r27" ), 27 );
addhtitem (valu_hashpt, mips_allocstr ("r28" ), 28 );
addhtitem (valu_hashpt, mips_allocstr ("r29" ), 29 );
addhtitem (valu_hashpt, mips_allocstr ("r30" ), 30 );
addhtitem (valu_hashpt, mips_allocstr ("r31" ), 31 );
addhtitem (valu_hashpt, mips_allocstr ("badvaddr"), _BADVADDR);
addhtitem (valu_hashpt, mips_allocstr ("status" ), _STATUS );
addhtitem (valu_hashpt, mips_allocstr ("cause" ), _CAUSE );
addhtitem (valu_hashpt, mips_allocstr ("epc" ), _EPC );
addhtitem (valu_hashpt, mips_allocstr (".align" ), _ALIGN );
addhtitem (valu_hashpt, mips_allocstr (".ascii" ), _ASCII );
addhtitem (valu_hashpt, mips_allocstr (".asciiz" ), _ASCIIZ );
addhtitem (valu_hashpt, mips_allocstr (".byte" ), _BYTE );
addhtitem (valu_hashpt, mips_allocstr (".bytez" ), _BYTEZ );
addhtitem (valu_hashpt, mips_allocstr (".data" ), _DATA );
addhtitem (valu_hashpt, mips_allocstr (".end" ), _END );
addhtitem (valu_hashpt, mips_allocstr (".equ" ), _EQU );
addhtitem (valu_hashpt, mips_allocstr (".global" ), _GLOBAL );
addhtitem (valu_hashpt, mips_allocstr (".org" ), _ORG );
addhtitem (valu_hashpt, mips_allocstr (".skip" ), _SKIP );
addhtitem (valu_hashpt, mips_allocstr (".space" ), _SPACE );
addhtitem (valu_hashpt, mips_allocstr (".start" ), _START );
addhtitem (valu_hashpt, mips_allocstr (".text" ), _TEXT );
addhtitem (valu_hashpt, mips_allocstr (".word" ), _WORD );
addhtitem (valu_hashpt, mips_allocstr ("nop" ), _NOP );
addhtitem (valu_hashpt, mips_allocstr ("loadi" ), _LOADI );
addhtitem (valu_hashpt, mips_allocstr ("la" ), _LOADI );
addhtitem (valu_hashpt, mips_allocstr ("li" ), _LOADI );
addhtitem (valu_hashpt, mips_allocstr ("add" ), _ADD );
addhtitem (valu_hashpt, mips_allocstr ("addi" ), _ADDI );
addhtitem (valu_hashpt, mips_allocstr ("addu" ), _ADDU );
addhtitem (valu_hashpt, mips_allocstr ("addiu" ), _ADDIU );
addhtitem (valu_hashpt, mips_allocstr ("and" ), _AND );
addhtitem (valu_hashpt, mips_allocstr ("andi" ), _ANDI );
addhtitem (valu_hashpt, mips_allocstr ("beq" ), _BEQ );
addhtitem (valu_hashpt, mips_allocstr ("bgez" ), _BGEZ );
addhtitem (valu_hashpt, mips_allocstr ("bgezal" ), _BGEZAL );
addhtitem (valu_hashpt, mips_allocstr ("bgtz" ), _BGTZ );
addhtitem (valu_hashpt, mips_allocstr ("blez" ), _BLEZ );
addhtitem (valu_hashpt, mips_allocstr ("bltz" ), _BLTZ );
addhtitem (valu_hashpt, mips_allocstr ("bltzal" ), _BLTZAL );
addhtitem (valu_hashpt, mips_allocstr ("bne" ), _BNE );
addhtitem (valu_hashpt, mips_allocstr ("break" ), _BREAK );
addhtitem (valu_hashpt, mips_allocstr ("j" ), _J );
addhtitem (valu_hashpt, mips_allocstr ("jal" ), _JAL );
addhtitem (valu_hashpt, mips_allocstr ("jalr" ), _JALR );
addhtitem (valu_hashpt, mips_allocstr ("jr" ), _JR );
addhtitem (valu_hashpt, mips_allocstr ("lb" ), _LB );
addhtitem (valu_hashpt, mips_allocstr ("lbu" ), _LBU );
addhtitem (valu_hashpt, mips_allocstr ("lh" ), _LH );
addhtitem (valu_hashpt, mips_allocstr ("lhu" ), _LHU );
addhtitem (valu_hashpt, mips_allocstr ("lui" ), _LUI );
addhtitem (valu_hashpt, mips_allocstr ("lw" ), _LW );
addhtitem (valu_hashpt, mips_allocstr ("mfc0" ), _MFC0 );
addhtitem (valu_hashpt, mips_allocstr ("mfhi" ), _MFHI );
addhtitem (valu_hashpt, mips_allocstr ("mflo" ), _MFLO );
addhtitem (valu_hashpt, mips_allocstr ("mtc0" ), _MTC0 );
addhtitem (valu_hashpt, mips_allocstr ("mthi" ), _MTHI );
addhtitem (valu_hashpt, mips_allocstr ("mtlo" ), _MTLO );
addhtitem (valu_hashpt, mips_allocstr ("nor" ), _NOR );
addhtitem (valu_hashpt, mips_allocstr ("or" ), _OR );
addhtitem (valu_hashpt, mips_allocstr ("ori" ), _ORI );
addhtitem (valu_hashpt, mips_allocstr ("rfe" ), _RSTFE );
addhtitem (valu_hashpt, mips_allocstr ("sb" ), _SB );
addhtitem (valu_hashpt, mips_allocstr ("sh" ), _SH );
addhtitem (valu_hashpt, mips_allocstr ("sleep" ), _SLEEP );
addhtitem (valu_hashpt, mips_allocstr ("sll" ), _SLL );
addhtitem (valu_hashpt, mips_allocstr ("sllv" ), _SLLV );
addhtitem (valu_hashpt, mips_allocstr ("slt" ), _SLT );
addhtitem (valu_hashpt, mips_allocstr ("slti" ), _SLTI );
addhtitem (valu_hashpt, mips_allocstr ("sltiu" ), _SLTIU );
addhtitem (valu_hashpt, mips_allocstr ("sltu" ), _SLTU );
addhtitem (valu_hashpt, mips_allocstr ("sra" ), _SRA );
addhtitem (valu_hashpt, mips_allocstr ("srav" ), _SRAV );
addhtitem (valu_hashpt, mips_allocstr ("srl" ), _SRL );
addhtitem (valu_hashpt, mips_allocstr ("srlv" ), _SRLV );
addhtitem (valu_hashpt, mips_allocstr ("sub" ), _SUB );
addhtitem (valu_hashpt, mips_allocstr ("subu" ), _SUBU );
addhtitem (valu_hashpt, mips_allocstr ("sw" ), _SW );
addhtitem (valu_hashpt, mips_allocstr ("swap" ), _SWAP );
addhtitem (valu_hashpt, mips_allocstr ("syscall" ), _SYSCALL );
addhtitem (valu_hashpt, mips_allocstr ("xor" ), _XOR );
addhtitem (valu_hashpt, mips_allocstr ("xori" ), _XORI );
}
return (gethtitem (valu_hashpt, str));
}
static unsigned long hextoint (str)
char *str;
{
unsigned long valu = 0;
char c = 0;
while ((c = *str) != '\0')
{
if ((c >= '0') && (c <= '9'))
valu = (valu << 4) + c - '0';
else
if ((c >= 'a') && (c <= 'f'))
valu = (valu << 4) + c - 'a' + 10;
else
if ((c >= 'A') && (c <= 'F'))
valu = (valu << 4) + c - 'A' + 10;
str++;
}
return (valu);
}
static unsigned long octtoint (str)
char *str;
{
unsigned long valu = 0;
char c = 0;
while ((c = *str) != '\0')
{
if ((c >= '0') && (c <= '7'))
valu = (valu << 3) + c - '0';
str++;
}
return (valu);
}
static unsigned long bintoint (str)
char *str;
{
unsigned long valu = 0;
char c = 0;
while ((c = *str) != '\0')
{
if ((c == '0') || (c == '1'))
valu = (valu << 1) + c - '0';
str++;
}
return (valu);
}
int yywrap ()
{
return (1);
}

View File

@ -0,0 +1,41 @@
/*
* This file is part of the Alliance CAD System
* Copyright (C) Laboratoire LIP6 - Département ASIM
* Universite Pierre et Marie Curie
*
* Home page : http://www-asim.lip6.fr/alliance/
* E-mail : mailto:alliance-users@asim.lip6.fr
*
* This progam is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* Alliance VLSI CAD System is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the GNU C Library; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* ###--------------------------------------------------------------### */
/* file : mips_lex.h */
/* date : Apr 20 1995 */
/* version : v0.0 */
/* author : Pirouz BAZARGAN SABET */
/* description : MIPS assembler - external and static variables and */
/* functions */
/* ###--------------------------------------------------------------### */
extern int MPS_LINNUM ;
static unsigned long hextoint ();
static unsigned long octtoint ();
static unsigned long bintoint ();
static int searchtype ();
static int searchvalu ();
extern int yywrap ();

View File

@ -0,0 +1,37 @@
/*
* This file is part of the Alliance CAD System
* Copyright (C) Laboratoire LIP6 - Département ASIM
* Universite Pierre et Marie Curie
*
* Home page : http://www-asim.lip6.fr/alliance/
* E-mail : mailto:alliance-users@asim.lip6.fr
*
* This progam is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* Alliance VLSI CAD System is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the GNU C Library; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* ###--------------------------------------------------------------### */
/* file : mips_type.h */
/* date : Apr 20 1995 */
/* version : v0.0 */
/* author : Pirouz BAZARGAN SABET */
/* content : types used by the assmbler */
/* ###--------------------------------------------------------------### */
struct immd
{
unsigned long valu;
char flag;
};

View File

@ -0,0 +1,124 @@
/*
* This file is part of the Alliance CAD System
* Copyright (C) Laboratoire LIP6 - Département ASIM
* Universite Pierre et Marie Curie
*
* Home page : http://www-asim.lip6.fr/alliance/
* E-mail : mailto:alliance-users@asim.lip6.fr
*
* This progam is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* Alliance VLSI CAD System is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the GNU C Library; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* ###--------------------------------------------------------------### */
/* file : mips_util.c */
/* date : Sep 2 1994 */
/* version : v0.0 */
/* author : Pirouz BAZARGAN SABET & Julien DUNOYER */
/* ###--------------------------------------------------------------### */
#include <stdio.h>
#include "mut.h"
#include "log.h"
#include "beh.h"
/* ###--------------------------------------------------------------### */
/* function : mips_allocstr */
/* description : make a memory allocation for a string. This function */
/* insures that for a given string there will be a */
/* unique memory allocation */
/* called func. : none */
/* ###--------------------------------------------------------------### */
char *mips_allocstr (src_str)
char *src_str; /* source string */
{
static struct beden **lcl_dic = NULL;
char *res_str = NULL;
unsigned int cod1 = 0 ;
unsigned int cod2 = 0 ;
unsigned int size = 0 ;
struct chain *chn_pnt = NULL;
struct chain *str_lst = NULL;
/* ###------------------------------------------------------### */
/* initialize the local static dictionary */
/* ###------------------------------------------------------### */
if (lcl_dic == NULL)
lcl_dic = beh_initab ();
if (src_str != NULL)
{
/* ###------------------------------------------------------### */
/* hash the source string. Two codes are produced to decrease*/
/* conflict probability. */
/* ###------------------------------------------------------### */
while (src_str [size] != '\0')
{
cod1 = (cod1 << 1) ^ (cod2 + (src_str [size] << (size % 8)));
cod2 = (cod1 << 16) + (cod2 << 1) + src_str [size] ;
size++;
}
size++;
/* ###------------------------------------------------------### */
/* extract from the dictionary the strings that have the */
/* same first and second code and the same size */
/* ###------------------------------------------------------### */
chn_pnt = (struct chain *) beh_chktab (lcl_dic, cod1, cod2, 7);
str_lst = chn_pnt;
/* ###------------------------------------------------------### */
/* scan the list comparing the strings found in the list */
/* with the source string. */
/* ###------------------------------------------------------### */
while (chn_pnt != NULL)
{
if (!strcmp (chn_pnt->DATA, src_str))
break;
chn_pnt = chn_pnt->NEXT;
}
/* ###------------------------------------------------------### */
/* if no string has been found, create a new string and add */
/* it into the dictionary. */
/* ###------------------------------------------------------### */
if (chn_pnt == NULL)
{
res_str = (char *) mbkalloc (size * sizeof (char));
strcpy (res_str, src_str);
chn_pnt = addchain (NULL, res_str);
if (str_lst != NULL)
{
chn_pnt->NEXT = str_lst->NEXT;
str_lst->NEXT = chn_pnt ;
}
else
beh_addtab (lcl_dic, cod1, cod2, 7, chn_pnt);
}
else
res_str = (char *) chn_pnt->DATA;
}
return (res_str);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,67 @@
/*
* This file is part of the Alliance CAD System
* Copyright (C) Laboratoire LIP6 - Département ASIM
* Universite Pierre et Marie Curie
*
* Home page : http://www-asim.lip6.fr/alliance/
* E-mail : mailto:alliance-users@asim.lip6.fr
*
* This progam is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* Alliance VLSI CAD System is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the GNU C Library; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* ###--------------------------------------------------------------### */
/* file : mips_yacc.h */
/* date : Dec 9 1999 */
/* version : v0.3 */
/* author : Pirouz BAZARGAN SABET */
/* description : MIPS assembler - external and static variables and */
/* functions */
/* ###--------------------------------------------------------------### */
extern int MPS_LINNUM ;
static int MPS_PASNBR ;
static int MPS_ERRFLG ;
static FILE *MPS_TXTFIL = NULL;
static unsigned long MPS_TXTADR = 0 ;
static int MPS_TXTSIZ = 0 ;
static FILE *MPS_DATFIL = NULL;
static unsigned long MPS_DATADR = 0 ;
static int MPS_DATSIZ = 0 ;
static char *MPS_LABEL = NULL;
static FILE *MPS_WRTFIL = NULL;
static FILE *MPS_SYMFIL = NULL;
static unsigned long MPS_ADDRES ;
static int MPS_ADRSIZ = 0 ;
static int MPS_WRDSIZ = 0 ;
static char MPS_ADRSPC = 'T' ;
static char MPS_SYMBOL = 'n' ;
static char MPS_DUMP = 'n' ;
static unsigned char MPS_BYTTAB [1024];
static struct beden **MPS_HSHTAB = NULL;
static void mips_error ();
static void mips_head ();
static void mips_foot ();
static void mips_print ();
static void mips_symbol ();
static int mips_strtobin ();