X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=rmac.c;h=280b5979e34c2b8580eeca8f3eb20d204f30929b;hp=a8eb72c8661e95d3108a1acb2c3e7007784479b2;hb=02523045dcb28c8f6ad794a84e32beff214be424;hpb=d4e405e35a5e2a94076b0f882dc9a09f9b695a71 diff --git a/rmac.c b/rmac.c index a8eb72c..280b597 100644 --- a/rmac.c +++ b/rmac.c @@ -45,7 +45,7 @@ char * firstfname; // First source filename char * cmdlnexec; // Executable name, pointer to ARGV[0] char * searchpath; // Search path for include files char defname[] = "noname.o"; // Default output filename - +int optim_flags[OPT_COUNT]; // Specific optimisations on/off matrix // // Manipulate file extension. @@ -132,7 +132,12 @@ void DisplayHelp(void) " -l[filename] Create an output listing file\n" " -n Don't do things behind your back in RISC assembler\n" " -o file Output file name\n" - " -p[n] Create an ST .prg (1=normal, 2=w/symbols)\n" + " +o[value] Turn a specific optimisation on\n" + " ~o[value] Turn a specific optimisation off\n" + " +oall Turn all optimisations on\n" + " ~oall Turn all optimisations off\n" + " -p Create an ST .prg (without symbols)\n" + " -ps Create an ST .prg (with symbols)\n" " Forces -fa\n" " -r[size] Pad segments to boundary size specified\n" " w: word (2 bytes, default alignment)\n" @@ -141,8 +146,10 @@ void DisplayHelp(void) " d: double phrase (16 bytes)\n" " q: quad phrase (32 bytes)\n" " -s Warn about possible short branches\n" + " and applied optimisations\n" " -u Force referenced and undefined symbols global\n" " -v Set verbose mode\n" + " -x Turn on debugging mode\n" " -y[pagelen] Set page line length (default: 61)\n" "\n", cmdlnexec); } @@ -153,7 +160,12 @@ void DisplayHelp(void) // void DisplayVersion(void) { - printf("\nReboot's Macro Assembler for Atari Jaguar\n" + printf("\n" + " _ __ _ __ ___ __ _ ___ \n" + "| '__| '_ ` _ \\ / _` |/ __|\n" + "| | | | | | | | (_| | (__ \n" + "|_| |_| |_| |_|\\__,_|\\___|\n" + "\nReboot's Macro Assembler\n" "Copyright (C) 199x Landon Dyer, 2011-2015 Reboot\n" "V%01i.%01i.%01i %s (%s)\n\n", MAJOR, MINOR, PATCH, __DATE__, PLATFORM); } @@ -395,6 +407,38 @@ int Process(int argc, char ** argv) break; } } + else if (*argv[argno] == '+' || *argv[argno] == '~') + { + int onoff = 0; + if (*argv[argno] == '+') + onoff = 1; + if ((argv[argno][2] == 'a' || argv[argno][2] == 'A') && + (argv[argno][3] == 'l' || argv[argno][3] == 'L') && + (argv[argno][4] == 'l' || argv[argno][4] == 'L')) + memset(optim_flags, onoff, OPT_COUNT * sizeof(int)); + else if (argv[argno][1] == 'o' || argv[argno][1] == 'O') // Turn on specific optimisation + { + int opt_no = atoi(&argv[argno][2]); + if (opt_no>=0 && opt_no