From: keie Date: Mon, 10 Jun 1985 16:05:04 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: release-5-5~5440 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=68e92c8319086abc0b799f15f1f966da4ea5124e;p=ack.git *** empty log message *** --- diff --git a/mach/i80/as/mach0.c b/mach/i80/as/mach0.c new file mode 100644 index 000000000..94fae3143 --- /dev/null +++ b/mach/i80/as/mach0.c @@ -0,0 +1,9 @@ +#define DUK +#define RCSID0 "$Header$" + +/* + * Intel 8080 options + */ +#define LISTING +#define RELOCATION +#define NOLD diff --git a/mach/i80/as/mach1.c b/mach/i80/as/mach1.c new file mode 100644 index 000000000..888e567e9 --- /dev/null +++ b/mach/i80/as/mach1.c @@ -0,0 +1,19 @@ +#define RCSID1 "$Header$" + +/* + * Intel 8080 register names + */ + +#define B 0 +#define C 1 +#define D 2 +#define E 3 +#define H 4 +#define L 5 +#define M 6 +#define A 7 +#define SP 6 +#define PSW 6 + +#define low3(z) ((z) & 07) +#define fit3(z) (low3(z) == (z)) diff --git a/mach/i80/as/mach2.c b/mach/i80/as/mach2.c new file mode 100644 index 000000000..4ca1fd2d9 --- /dev/null +++ b/mach/i80/as/mach2.c @@ -0,0 +1,19 @@ +#define RCSID2 "$Header$" + +/* + * Intel 8080 tokens + */ +%token REG +%token NOOPOP +%token DSTOP +%token SRCOP +%token D8OP +%token D16OP +%token R16OP +%token MOV +%token MVI +%token LXI +%token RST +%token STLDAX + +%type r16 r8 diff --git a/mach/i80/as/mach3.c b/mach/i80/as/mach3.c new file mode 100644 index 000000000..05b2867f8 --- /dev/null +++ b/mach/i80/as/mach3.c @@ -0,0 +1,95 @@ +#define RCSID3 "$Header$" + +/* + * Intel 8080 keywords + */ +0, REG, B, "b", +0, REG, C, "c", +0, REG, D, "d", +0, REG, E, "e", +0, REG, H, "h", +0, REG, L, "l", +0, REG, M, "m", +0, REG, A, "a", +0, REG, SP, "sp", +0, REG, PSW, "psw", +0, D16OP, 0315, "call", +0, D16OP, 0334, "cc", +0, D16OP, 0324, "cnc", +0, D16OP, 0314, "cz", +0, D16OP, 0304, "cnz", +0, D16OP, 0364, "cp", +0, D16OP, 0374, "cm", +0, D16OP, 0354, "cpe", +0, D16OP, 0344, "cpo", +0, NOOPOP, 0311, "ret", +0, NOOPOP, 0330, "rc", +0, NOOPOP, 0320, "rnc", +0, NOOPOP, 0310, "rz", +0, NOOPOP, 0300, "rnz", +0, NOOPOP, 0360, "rp", +0, NOOPOP, 0370, "rm", +0, NOOPOP, 0350, "rpe", +0, NOOPOP, 0340, "rpo", +0, RST, 0307, "rst", +0, D8OP, 0333, "in", +0, D8OP, 0323, "out", +0, LXI, 0001, "lxi", +0, R16OP, 0305, "push", +0, R16OP, 0301, "pop", +0, D16OP, 0062, "sta", +0, D16OP, 0072, "lda", +0, NOOPOP, 0353, "xchg", +0, NOOPOP, 0343, "xthl", +0, NOOPOP, 0371, "sphl", +0, NOOPOP, 0351, "pchl", +0, R16OP, 0011, "dad", +0, STLDAX, 0002, "stax", +0, STLDAX, 0012, "ldax", +0, R16OP, 0003, "inx", +0, MOV, 0100, "mov", +0, NOOPOP, 0166, "hlt", +0, MVI, 0006, "mvi", +0, DSTOP, 0004, "inr", +0, DSTOP, 0005, "dcr", +0, SRCOP, 0200, "add", +0, SRCOP, 0210, "adc", +0, SRCOP, 0220, "sub", +0, SRCOP, 0230, "sbb", +0, SRCOP, 0240, "ana", +0, SRCOP, 0250, "xra", +0, SRCOP, 0260, "ora", +0, SRCOP, 0270, "cmp", +0, D8OP, 0306, "adi", +0, D8OP, 0316, "aci", +0, D8OP, 0326, "sui", +0, D8OP, 0336, "sbi", +0, D8OP, 0346, "ani", +0, D8OP, 0356, "xri", +0, D8OP, 0366, "ori", +0, D8OP, 0376, "cpi", +0, NOOPOP, 0007, "rlc", +0, NOOPOP, 0017, "rrc", +0, NOOPOP, 0027, "ral", +0, NOOPOP, 0037, "rar", +0, D16OP, 0303, "jmp", +0, D16OP, 0332, "jc", +0, D16OP, 0322, "jnc", +0, D16OP, 0312, "jz", +0, D16OP, 0302, "jnz", +0, D16OP, 0362, "jp", +0, D16OP, 0372, "jm", +0, D16OP, 0352, "jpe", +0, D16OP, 0342, "jpo", +0, R16OP, 0013, "dcx", +0, NOOPOP, 0057, "cma", +0, NOOPOP, 0067, "stc", +0, NOOPOP, 0077, "cmc", +0, NOOPOP, 0047, "daa", +0, D16OP, 0042, "shld", +0, D16OP, 0052, "lhld", +0, NOOPOP, 0373, "ei", +0, NOOPOP, 0363, "di", +0, NOOPOP, 0000, "nop", +0, NOOPOP, 0040, "rim", /* 8085 */ +0, NOOPOP, 0060, "sim", /* 8085 */ diff --git a/mach/i80/as/mach4.c b/mach/i80/as/mach4.c new file mode 100644 index 000000000..30e083b6c --- /dev/null +++ b/mach/i80/as/mach4.c @@ -0,0 +1,97 @@ +#define RCSID4 "$Header$" + +/* + * (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands. + * + * This product is part of the Amsterdam Compiler Kit. + * + * Permission to use, sell, duplicate or disclose this software must be + * obtained in writing. Requests for such permissions may be sent to + * + * Dr. Andrew S. Tanenbaum + * Wiskundig Seminarium + * Vrije Universiteit + * Postbox 7161 + * 1007 MC Amsterdam + * The Netherlands + * + */ + +/* + * Intel 8080 parsing rules + */ +operation + : NOOPOP + { emit1($1);} + | + D8OP expr + { emit1($1); +#ifdef RELOCATION + newrelo($2.typ, RELO1); +#endif + emit1($2.val); + } + | + D16OP expr + { emit1($1); +#ifdef RELOCATION + newrelo($2.typ, RELO2); +#endif + emit2($2.val); + } + | + R16OP r16 + { emit1($1 | ($2 << 3));} + | + MOV r8 ',' r8 + { if ($2 == M && $4 == M) + serror("register error"); + emit1($1 | ($2 << 3) | $4); + } + | + MVI r8 ',' expr + { emit1($1 | ($2 << 3)); +#ifdef RELOCATION + newrelo($4.typ, RELO1); +#endif + emit1($4.val); + } + | + LXI r16 ',' expr + { emit1($1 | ($2 << 3)); +#ifdef RELOCATION + newrelo($4.typ, RELO2); +#endif + emit2($4.val); + } + | + SRCOP r8 + { emit1($1 | $2);} + | + DSTOP r8 + { emit1($1 | ($2 << 3));} + | + RST absexp + { fit(fit3($2)); + emit1($1 | (low3($2) << 3)); + } + | + STLDAX r16 + { + if ($2 != B && $2 != D) + serror("register error"); + emit1($1 | (($2 & 02) << 3)); + } + ; +r16 : REG + { if ($1 & ~06) + serror("register error"); + $$ = $1 & 06; + } + ; +r8 : REG + { if (($1 & ~07) != 0) + serror("register error"); + $$ = $1 & 07; + } + ; diff --git a/mach/i80/as/mach5.c b/mach/i80/as/mach5.c new file mode 100644 index 000000000..e69de29bb