📄 main.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 + -