diff options
author | Robert de Bath <rdebath@poboxes.com> | 1998-02-01 11:26:21 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2013-10-23 23:40:14 +0200 |
commit | 48f0b3eb836162d41622cedc1eb5f5168168fb8e (patch) | |
tree | c53156383d4682a0a296f6611575dbc1d64d1881 /copt | |
parent | 48798bf2eb93ec3b99720ac2e16093441156653d (diff) | |
download | dev86-48f0b3eb836162d41622cedc1eb5f5168168fb8e.tar.gz |
Import Dev86src-0.13.5.tar.gzv0.13.5
Diffstat (limited to 'copt')
-rw-r--r-- | copt/copt.c | 72 | ||||
-rw-r--r-- | copt/copt.diff | 72 | ||||
-rw-r--r-- | copt/rules.86 | 8 | ||||
-rw-r--r-- | copt/rules.end | 2 |
4 files changed, 44 insertions, 110 deletions
diff --git a/copt/copt.c b/copt/copt.c index 83ee18f..6cef964 100644 --- a/copt/copt.c +++ b/copt/copt.c @@ -302,13 +302,6 @@ static void readinfile(char *filename, char comment) (void)fclose(fp); } - - -/* - * Eval an expression into an integer number - */ -static long eval(char *str, int len) -{ #define NO_OP 0 #define ADD_OP 1 #define SUB_OP 2 @@ -317,39 +310,52 @@ static long eval(char *str, int len) #define SHL_OP 5 #define SHR_OP 6 - char *oldcp, *cp, c; long retval = 0; long num = 0; int sign = 1; int base = 10; - int state = 0; int op = NO_OP; + +/* Apply operation to current numeric value */ +static void doretval(void) +{ + switch (op) { + case NO_OP: retval = num * sign; + break; + case ADD_OP: retval += num * sign; + break; + case SUB_OP: retval -= num * sign; + break; + case MUL_OP: retval *= num * sign; + break; + case DIV_OP: retval /= num * sign; + break; + case SHL_OP: retval <<= num; + break; + case SHR_OP: retval >>= num; + break; + } + op = NO_OP; + num = 0; + sign = 1; + base = 10; +} + + +/* + * Eval an expression into an integer number + */ +static long eval(char *str, int len) +{ + char *oldcp, *cp, c; + int state = 0; int i, varnum; - /* Apply operation to current numeric value */ - static void doretval(void) - { - switch (op) { - case NO_OP: retval = num * sign; - break; - case ADD_OP: retval += num * sign; - break; - case SUB_OP: retval -= num * sign; - break; - case MUL_OP: retval *= num * sign; - break; - case DIV_OP: retval /= num * sign; - break; - case SHL_OP: retval <<= num; - break; - case SHR_OP: retval >>= num; - break; - } - op = NO_OP; - num = 0; - sign = 1; - base = 10; - } + retval = 0; + num = 0; + sign = 1; + base = 10; + op = NO_OP; /* Scan through whole string and decode it */ for (cp = str, i = 0; *cp && i < len; cp++, i++) { diff --git a/copt/copt.diff b/copt/copt.diff deleted file mode 100644 index 89d3686..0000000 --- a/copt/copt.diff +++ /dev/null @@ -1,72 +0,0 @@ -diff -rc linux-86.orig/copt/copt.c linux-86/copt/copt.c -*** linux-86.orig/copt/copt.c Tue Feb 18 21:31:34 1997 ---- linux-86/copt/copt.c Tue Apr 22 14:11:05 1997 -*************** -*** 303,314 **** - } - - -- -- /* -- * Eval an expression into an integer number -- */ -- static long eval(char *str, int len) -- { - #define NO_OP 0 - #define ADD_OP 1 - #define SUB_OP 2 ---- 303,308 ---- -*************** -*** 317,330 **** - #define SHL_OP 5 - #define SHR_OP 6 - -! char *oldcp, *cp, c; -! long retval = 0; -! long num = 0; -! int sign = 1; -! int base = 10; -! int state = 0; -! int op = NO_OP; -! int i, varnum; - - /* Apply operation to current numeric value */ - static void doretval(void) ---- 311,321 ---- - #define SHL_OP 5 - #define SHR_OP 6 - -! static int op = NO_OP; -! static long retval = 0; -! static long num = 0; -! static int sign = 1; -! static int base = 10; - - /* Apply operation to current numeric value */ - static void doretval(void) -*************** -*** 350,355 **** ---- 341,363 ---- - sign = 1; - base = 10; - } -+ -+ -+ /* -+ * Eval an expression into an integer number -+ */ -+ static long eval(char *str, int len) -+ { -+ -+ char *oldcp, *cp, c; -+ int state = 0; -+ int i, varnum; -+ -+ op = NO_OP; -+ retval = 0; -+ num = 0; -+ sign = 1; -+ base = 10; - - /* Scan through whole string and decode it */ - for (cp = str, i = 0; *cp && i < len; cp++, i++) { diff --git a/copt/rules.86 b/copt/rules.86 index b4030cd..239ebde 100644 --- a/copt/rules.86 +++ b/copt/rules.86 @@ -68,7 +68,6 @@ inc %[si|di]* mov al,-1[si] mov -1[di],al = -cld lodsb stosb @@ -77,7 +76,6 @@ inc %[si|di]* mov al,-1[di] mov -1[si],al = -cld xchg si,di lodsb stosb @@ -86,13 +84,11 @@ xchg si,di inc si mov al,-1[si] = -cld lodsb inc di mov -1[di],al = -cld stosb dec %[si|di]* @@ -103,6 +99,7 @@ mov 1[di],al std lodsb stosb +cld dec %[si|di]* dec %[si|di]* @@ -114,18 +111,21 @@ xchg si,di lodsb stosb xchg si,di +cld dec si mov al,1[si] = std lodsb +cld dec di mov 1[di],al = std stosb +cld # Rules for manipulating short values diff --git a/copt/rules.end b/copt/rules.end index cd93d4e..feda08b 100644 --- a/copt/rules.end +++ b/copt/rules.end @@ -1,6 +1,6 @@ # Rules to optimize BCC assembler output -# Redo the changes done in rules.start +# Undo the changes done in rules.start proc_start = |