/* * Author: Pawel Jablonski * E-mail: pj@xirx.net * WWW: xirx.net * GIT: git.xirx.net * * License: You can use this code however you like * but leave information about the original author. * Code is free for non-commercial and commercial use. */ #include #include #include "asm.h" /** * Print an exit message and the usage prompt if needed * * @param message Message to print * @param showUsage Show or not the usage prompt */ static void printExitMessage(const QString &message, const bool showUsage = false) { QTextStream out(stdout); out << message << "\n\n"; if(showUsage) { out << "Run as ROM build:\n"; out << " asm rom [input_file] [output_bin] [output_map]\n\n"; out << "Run as APP build:\n"; out << " asm app [input_file] [output_bin]\n\n"; } } /** * Main entry function of the application * * @param argc Arguments count * @param argv Arguments list stored in an array */ int main(int argc, char *argv[]) { QString inputFile; QString outputFile; QString outputMapFile; // Prepare the assembler Asm assembler = Asm(); if(argc >= 2) { if(!QString(argv[1]).compare("rom", Qt::CaseInsensitive)) { if(argc == 5) { inputFile = QString(argv[2]); outputFile = QString(argv[3]); outputMapFile = QString(argv[4]); // Compile the kernel return(assembler.compileRom(inputFile, outputFile, outputMapFile)); } } else if(!QString(argv[1]).compare("app", Qt::CaseInsensitive)) { if(argc == 4) { inputFile = QString(argv[2]); outputFile = QString(argv[3]); // Compile the application return(assembler.compileApp(inputFile, outputFile)); } } else { printExitMessage(QString("ERROR: Unknow compilation mode"), true); return(-1); } } printExitMessage(QString("ERROR: Bad number of arguments"), true); return(-1); }