⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 这是一个基于mips-I结构的处理器,32bit,冯诺依曼结构
💻 C
字号:
/**********************************************************************************//*                                                                                *//*    Copyright (c) 2003, Hangouet Samuel, Mouton Louis-Marie all rights reserved *//*                                                                                *//*    This file is part of gasm.                                                  *//*                                                                                *//*    gasm 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.                                         *//*                                                                                *//*    gasm 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 gasm; if not, write to the Free Software                         *//*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA   *//*                                                                                *//**********************************************************************************//* If you encountered any problem, please contact :                               *//*                                                                                *//*   lmouton@enserg.fr                                                            *//*   shangoue@enserg.fr                                                           *//*                                                                                */#include <debogueur.h>#include <dialogue.h>#include <formateur.h>#include <parametres.h>#include <preprocesseur.h>#include <adaptateur.h>#include <preparateur.h>#include <analyseur.h>#include <synthetiseur.h>#include <stdio.h>#include <string.h>static char     nom_source[MAX_LONG_ALPHA+1]="";static char     nom_syntaxe[MAX_LONG_ALPHA+1]="Syntaxe";static char     nom_macro[MAX_LONG_ALPHA+1]="";static char     nom_liste[MAX_LONG_ALPHA+1]="a.lst";static char     nom_obj[MAX_LONG_ALPHA+1]="a.bin";int gere_args(int argc, char * argv[]){        int i;        char * cur_arg;        nom_source[MAX_LONG_ALPHA]=nom_syntaxe[MAX_LONG_ALPHA]=nom_macro[MAX_LONG_ALPHA]='\0';        for(i=1; i<argc; i++)        {                cur_arg=argv[i];                if (*cur_arg=='-')                {                        while(*(++cur_arg)!='\0') switch (*cur_arg)                        {                                case 'v': /* Active le mode verbeux.                         */                                        verbose=1;                                        break;                                case 'n': /* D閟active la liste d'assemblage.                */                                        active_list=0;                                        break;                                case 's': /* Nom du fichier syntaxe (par d閒aut 'Syntaxe').  */                                        if (cur_arg[1]!='\0' || i+1>=argc)                                        {                                                DIALOGUE(cur_arg, 0, W_ARG_INC);                                                break;                                        }                                        strncpy(nom_syntaxe,argv[i+1],MAX_LONG_ALPHA);                                        i++;                                        break;                                case 'm': /* Nom du fichier macro par d閒aut.                */                                        if (cur_arg[1]!='\0' || i+1>=argc)                                        {                                                DIALOGUE(cur_arg, 0, W_ARG_INC);                                                break;                                        }                                        strncpy(nom_macro,argv[i+1],MAX_LONG_ALPHA);                                        i++;                                        break;                                case 'l': /* Nom du fichier liste d'assemblage.              */                                        if (cur_arg[1]!='\0' || i+1>=argc)                                        {                                                DIALOGUE(cur_arg, 0, W_ARG_INC);                                                break;                                        }                                        strncpy(nom_liste,argv[i+1],MAX_LONG_ALPHA);                                        i++;                                        break;                                case 'o': /* Nom du fichier objet.                           */                                        if (cur_arg[1]!='\0' || i+1>=argc)                                        {                                                DIALOGUE(cur_arg, 0, W_ARG_INC);                                                break;                                        }                                        strncpy(nom_obj,argv[i+1],MAX_LONG_ALPHA);                                        i++;                                        break;                                case '?':                                case 'h': /* Aide en ligne.                                  */                                        display_help();                                        return 0;                                        break;                                case 'p': /* Utilise la sortie standard                      */                                        nom_obj[0]='\0';                                        break;                                default:                                        DIALOGUE(cur_arg, 0, W_ARG_INC);                                        break;                        }                }                else                {                        if (*nom_source!='\0') DIALOGUE(cur_arg, 0, W_ARG_INC)                        else strncpy(nom_source,cur_arg,MAX_LONG_ALPHA);                }        }        return 1;}int main(int argc, char * argv[]){        FILE * f_lst=NULL, * f_obj=NULL, * f_srceff=NULL;        int err1, err2;        int dst_std=0;        type_lexeme * ptr_lex;        if (!gere_args(argc, argv)) return 0; /* D閠ection du param鑤re d'aide.              */        /* Initialisation de la syntaxe de l'assembleur.                                     */        DIALOGUE(NULL, 0, B_INIT_SYNTAX);        init_arbre(nom_syntaxe);        /* Initialisation des macros g閚閞iques (pseudo-instructions).                       */        DIALOGUE(NULL, 0, B_INIT_MACRO);        /* Si le nom du fichier de macros n'est pas sp閏ifi

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -