summaryrefslogtreecommitdiff
path: root/copt
diff options
context:
space:
mode:
authorRobert de Bath <rdebath@poboxes.com>1998-02-01 11:26:21 +0100
committerLubomir Rintel <lkundrak@v3.sk>2013-10-23 23:40:14 +0200
commit48f0b3eb836162d41622cedc1eb5f5168168fb8e (patch)
treec53156383d4682a0a296f6611575dbc1d64d1881 /copt
parent48798bf2eb93ec3b99720ac2e16093441156653d (diff)
downloaddev86-48f0b3eb836162d41622cedc1eb5f5168168fb8e.tar.gz
Import Dev86src-0.13.5.tar.gzv0.13.5
Diffstat (limited to 'copt')
-rw-r--r--copt/copt.c72
-rw-r--r--copt/copt.diff72
-rw-r--r--copt/rules.868
-rw-r--r--copt/rules.end2
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
=