210 Commits

Author SHA1 Message Date
ceriel
02ccf4bfaa This is Kees Visser's version, implementing 4-4. 1986-07-21 09:19:34 +00:00
em
1eb736959a Added some xtra output for Henk Schouten's debugger. 1985-02-26 15:05:20 +00:00
cvs2hg
9846dd6633 fixup commit for branch 'unlabeled-2.4.1' 1984-10-16 13:31:45 +00:00
sater
9d03cb68c7 added code to generate code for ACK assembler.
Works if ACK_ASS is defined.
1984-10-16 13:31:44 +00:00
ceriel
d89d5770b1 Had forgotten to initialise the line number on which a nonterminal
symbol occurred first.
1984-10-12 14:19:34 +00:00
ceriel
f6d9a497eb No changes 1984-10-11 21:35:58 +00:00
ceriel
bac12b0c46 The former version gave a fatal error message at the first undefined
nonterminal. The new version checks all nonterminals
1984-10-11 10:35:01 +00:00
ceriel
e13ebaad9e The routine findpath did not work. It used the same static buffer for
several calls. Now it uses alloc.
1984-10-09 11:43:19 +00:00
em
315806b282 Initial revision 1984-10-09 10:36:29 +00:00
ceriel
43de6c3b78 added "#ifdef NORCSID" 1984-10-09 10:16:33 +00:00
ceriel
0ec009bde2 Added some comments and removed some Lint complaints 1984-10-09 10:13:46 +00:00
ceriel
0f8a2d3a39 Initial revision 1984-10-09 09:47:14 +00:00
ceriel
b5402db333 The routine LLmessage did not insert tokens properly.
This is corrected now.
1984-10-09 09:33:37 +00:00
ceriel
4f5c40c608 Changed RCSid 1984-10-08 17:11:03 +00:00
ceriel
2055a65cae Added RCSid. 1984-10-08 16:21:03 +00:00
ceriel
ed6a7245bd Adapted the libpath routine to use EM_DIR from ../../../h/em_path.h 1984-10-08 15:58:23 +00:00
ceriel
2cd6c03840 Added entry for LLgen. 1984-10-08 15:20:54 +00:00
ceriel
c38d1013cb Initial revision 1984-10-08 15:19:18 +00:00
ceriel
6da013b55a Added entry for LLgen documentation. 1984-10-08 15:00:23 +00:00
ceriel
e3eae54592 Initial revision 1984-10-08 14:51:38 +00:00
ceriel
7cc3184392 Initial revision 1984-10-08 14:24:19 +00:00
ceriel
952ba464cc Initial revision 1984-10-08 14:14:53 +00:00
keie
08b7ec6600 Initial revision 1984-10-08 14:11:42 +00:00
keie
f918aa20fe New installation procedure:
1 - New place for binaries and libraries in the ACK tree.
2 - The ranlib action is moved to ../../install which tries it at
    every action.
1984-10-08 14:09:28 +00:00
bal
54bac1caaf bug fixed: generate "add.l #65536,a1" rather than "lea 65536(a1),a1".
The latter form is only generated for constants that fit in a word.
1984-10-08 12:45:38 +00:00
keie
504da3a54d Altered the test path lib/n_ack into the normal path ACK_PATH. 1984-10-05 15:07:47 +00:00
keie
36cca2b9c7 Added a priority associated with each phase. Paths with the highest
total priority have preference.
1984-10-05 13:34:38 +00:00
keie
6f8a00ee5c 1 - Added some debugging for linker flags.
2 - Setting of NEEDS and RTS is moved to main.c.
3 - Added recognition of -Rphase:[-]number for dynamic priority setting.
1984-10-05 13:31:40 +00:00
keie
ca275f5d22 1 - Most flags used by ack itself are now also passed to the phases
for recognition with mapflag.
2 - A few bugs are removed in connection with argument passing to the
    linker (unrecognized flags and libraries).
3 - The setting of RTS, HEAD and TAIL is done directly after the
    path determination for each file.
1984-10-05 13:28:56 +00:00
keie
150c8164af Removed the defines needed by util/ack/em_pc.c.
These defaults are now provided in lib/ack/fe.
1984-10-04 11:11:30 +00:00
keie
70975146a1 1 - Added RCS identification.
2 - Removed the default for compiler and error file pathname.
    These are now always supplied by the callee.
1984-10-04 11:08:42 +00:00
keie
962cc80686 Corrected a small bug in the pc mapflags. 1984-10-04 10:54:11 +00:00
keie
f6ecbec936 1- Added RCS identification.
2- The pathnames of the Pascal compiler and Compile time-error file
   are now always explicitly passed to em_pc.
1984-10-04 10:47:03 +00:00
keie
8128e3d82d Altered to reflect the changes in em_path.h.
Now dynamically concatenes EM_DIR and error path.
1984-10-04 10:42:13 +00:00
keie
ea86ccd217 Altered the description of EM_HOME in em_path.h to that of
EM_DIR.
1984-10-02 16:24:59 +00:00
sater
045ccfaeba added missing cast at call to regsave, in ms_gto case 1984-10-02 11:17:57 +00:00
sater
a6b69be622 changed definition of myalloc to extern 1984-10-02 10:31:06 +00:00
sater
50d77d903a added external definition for myalloc() 1984-10-02 10:30:44 +00:00
keie
cbf6d06de2 Bug removed: the trailing zero at the end of a growstring was not
explicitly written in doassign(trans.c).
Only luck kept the program together.
1984-10-01 17:42:56 +00:00
keie
bb0ff814f6 Nill pointers are not allowed in CSA descriptors any more. 1984-10-01 16:05:17 +00:00
keie
f80b30bdbb Null pointer are not allowed any more for in-bound indeces in the CSA
table.
1984-10-01 14:54:09 +00:00
keie
7f6105c294 Initial revision 1984-09-25 16:33:15 +00:00
keie
1f59bd7223 Added National semiconductor assembler. 1984-09-25 16:32:45 +00:00
em
8f7669b247 1 - A few minor syntactic changes.
2 - Altered the description of strings as initializers. (sequence of U1's).
1984-09-25 11:06:29 +00:00
keie
f950163854 Made the buffer long enough for the machine state on most machines. 1984-09-24 15:18:20 +00:00
keie
38b8391594 Initial revision 1984-09-24 15:18:07 +00:00
keie
e88fe13466 Initial revision 1984-09-24 14:10:23 +00:00
em
e29ef2395a Compile-time option GLOBAL_OPT defined. If set, the resulting
peephole optimizer will be suitable for optimizing the output of
the global optimizer. In particular, it doesn't change the register
messages.
1984-09-14 10:25:07 +00:00
keie
546bcee023 1 - The prop keyword with is flags is now obsolete. Its function is
taken over by several other keywords: stdin, stdout, prep, optimizer,
    combiner and linker.
2 - The search order is changed. First {EM}/lib/{M}/descr, then
    {EM}/lib/ack/{M}, finally {M}.
1984-09-13 14:40:09 +00:00
keie
a9beb24998 The t_do bits are not set by this module. The t_next entry is used
to see whether the scan for this phase is already done.
t_do is now set in add_inputs(files.c).
1984-09-13 14:35:02 +00:00
keie
96da898a4a 1 - The t_do flags is now set by add_inputs(files.c).
2 - Recognize the fact that it is possible to start a combiner without
    input files.
3 - Removed -d flag. Overflow for -v (>2) now ends up in debug.
    -v may be followed by a number indicating the increment.
1984-09-13 11:07:46 +00:00
keie
a69b503ad0 1 - The outfile entry is only used when the output file must not be thrown
away.
2 - If a combiner has no named input file (only libs+flags) then issue
    a warning message and make up a name.
1984-09-13 11:04:00 +00:00
bal
5fd55904ec pem did not generate a register message for var-parameters of
array- or record type. The routine "treewalk" is modified.
It generates a register message for every var-parameter, even
if it has its noreg-flag set.
1984-09-12 13:21:43 +00:00
bal
195c808f88 unlk a6 added to restr(). 1984-09-11 15:44:14 +00:00
keie
50e3b4fe4a Added ego, basic and callname conventions. 1984-09-10 17:34:04 +00:00
keie
f366afdae1 No comment. 1984-09-10 16:51:02 +00:00
keie
c08fe56b97 Combiners (ego, linkers) now use a list of path's(ack.h) to indicate
their input files.
Unmatched flags are now sent to the linker.
1984-09-10 16:48:57 +00:00
keie
ed3db93f56 1 - A transformation is succesfull when
a - a stopsuffix is indicated and met,
    b - the last transformation is included in the transformation path.
2 - Maintains a 'cash' of best paths for all transformation to be executed.
1984-09-10 16:46:13 +00:00
keie
71dc6af5a8 The input file names of the linker are to be found in a different place. 1984-09-10 16:45:12 +00:00
keie
cfdc2ce05f 1 - added keywords callname and outfile. See manual.
2 - multiple combiners are allowed now.
3 - A different search mechanism is used for finding descriptor files.
1984-09-10 16:42:55 +00:00
keie
845c92825a 1 - callname recognition is moved to rmach.c.
2 - The overall scheme is altered.
	first, all input files are processed until a combining phase is met.
	then, all the combining phases are executed, the resulting files
	are again processed until a combiner (or final) phase is met.
3 - The EM_DIR shell variable can be used to set ack's idea of the EM
    home directory.
1984-09-10 16:37:11 +00:00
keie
3adba1b759 1 - The names of temporary files are now Ack'hex''unique'.'suffix'.
'hex' is the pid of the current invocation of ack in hex.
    'unique' is a tail unique to this invocation.
2 - The outfile field is used to indicate default naming, can be ovrrriden
    by the -o flag.
3 - Added handling for phases with multiple inputs (ego, linker).
1984-09-10 16:33:03 +00:00
keie
ea6c20f5d1 The role of the combiner is -partially- assumed by the linker.
Linker arguments are now part of the transformation structure.
Temp file nameing is changed.
1984-09-10 16:30:47 +00:00
keie
d99b36abf8 Naming of the tempname is changed (see files.c). 1984-09-10 16:29:37 +00:00
keie
93693877be Initial revision 1984-09-03 13:49:40 +00:00
sater
2aa5c6b7d9 Variable nregvars had a name clash with the array nregvar[] in the
file tables.c. That was different in the 8'th character (!"#$%&'()_).
These variables should actually be static.
1984-08-23 17:07:53 +00:00
keie
bbc3cb33cc We do not use the missing " trick anymore.
The root directory of the EM tree is in the name EM_DIR, the
root directory for tempfiles is in TMP_DIR.
All other path's are relative to EM_DIR.
1984-08-23 13:33:11 +00:00
keie
77ebfceac5 The ACK tree on the vax has as default machine 'vax2'. 1984-08-23 13:27:14 +00:00
keie
3d10bd6e59 The missing trailing " trick is now also used for TMP_DIR. 1984-08-23 13:26:44 +00:00
keie
03a31cf3fc The ms_gto is added. This is a trick used to indicate procedures
jumped to with gto.
1984-08-23 13:25:44 +00:00
keie
81267df9ad *** empty log message *** 1984-08-23 13:20:59 +00:00
keie
113cf23e0f Initial revision 1984-08-23 13:18:14 +00:00
keie
3154365fff Initial revision 1984-08-23 13:00:32 +00:00
sater
e006f1ec29 increased MAXNODES in small memory mode 1984-08-23 12:25:24 +00:00
sater
1c36c470db Increased the amount of information passed through error routines
to printf. The routine badassert, running on a 2/4 machine lost it's
last argument on the way.
Anyone know of a better way to solve this problem?
1984-08-17 15:35:28 +00:00
keie
1da13e49e1 Added comment. 1984-08-17 14:57:31 +00:00
keie
f077a39568 Added RCS identification. 1984-08-17 14:44:24 +00:00
sater
6474db065f Revised to include rcsid of pattern file in binary opt 1984-08-16 16:08:39 +00:00
sater
10b16f7c76 enlarged string table in big memory case 1984-08-16 13:34:59 +00:00
sater
1ff6c3236f added patterns to prevent stacking in *p++ cases 1984-08-15 16:05:54 +00:00
sater
19b13e8e4f added patterns to remove some more dup's 1984-08-15 16:04:19 +00:00
sater
e5d1aebbae added patterns for inc/dec/adp of local and external offsetted
This makes the getc() macro from C very efficient, among others
1984-08-15 14:31:54 +00:00
sater
b23de46c3a added patterns to remove as many dup's as possible. 1984-08-15 14:23:42 +00:00
sater
9bdd1abf9a added definition of malloc().
Program crashed on 2/4 machines
1984-08-08 10:54:04 +00:00
sater
6180399964 reworked patterns for autoincrement stores, now that peephole optimizer
rearranged it.
1984-08-07 10:22:49 +00:00
sater
db0822fa37 added patterns for *p++ local and external p
added pattern to remove some badly placed dups
1984-08-03 16:37:15 +00:00
sater
11026ace27 added setcc calls to some incrementing ops
added patterns for indirect local and external increments
added patterns for loe ine and such
1984-08-03 16:33:40 +00:00
sater
76281fa307 removed some superfluous patterns.
Were special cases not needed with the general case.
1984-08-03 13:16:59 +00:00
sater
dbcebe6e4c A move from a nonreg to a reg did not have the effect that all
registers clashing with the destination were erased. Erase added.
1984-08-02 16:31:25 +00:00
keie
8a4d834bc6 The name "unix" is now predefined for preprocessor usage. 1984-08-02 14:13:04 +00:00
sater
925701dc62 When building the parameter list for a pf-call, the line number
for the exchanges war remembered at the wrong time.
This caused:
	foo(3,'string')
to cause an external identifier for the string. Fixed.
1984-07-31 09:39:35 +00:00
keie
385d7ffbd8 String initializer handling is changed.
Strings are now considered to be sequences of xU1's.
No alignment is done before or after the string other than the
alignment done for names and segment type switches.
1984-07-30 14:42:33 +00:00
bal
e1c24cb475 bug fixed: added "fprintf(codefile,""rts\n");" to restr() 1984-07-30 12:47:54 +00:00
bal
964976ff0b bugs fixed (syntax errors, patterns moved to front,
"ldl ldl adp sdl sti" requires DATAREG instead of ANY1 on
fakestack)
1984-07-30 11:16:41 +00:00
bal
4eea24fe69 patterns added to generate autoincrement and to generate
a "move X,d0" instead of a "move X,-(sp)" before storing into X
1984-07-27 16:53:19 +00:00
sater
811bc78f04 added rcsid 1984-07-27 10:28:48 +00:00
sater
b07af506d6 added PR* routines 1984-07-26 13:15:21 +00:00
sater
5e97bff353 Changed procedure prolog to use PR* routines. 1984-07-26 13:05:22 +00:00
keie
c001aa20d7 *** empty log message *** 1984-07-23 11:49:00 +00:00
sater
61da47ea52 removed all calls to blm~ from table
duplicated some patterns for in[lc] to deal with de[lc]
extra rule for adi 2 to deal with source1 cleverly
1984-07-23 11:29:59 +00:00
sater
d6a3a26314 removed blm.s, not used by table anymore 1984-07-20 16:20:54 +00:00
sater
eca6c1f306 edited to make reentrant, no more globals in use 1984-07-20 16:20:28 +00:00
sater
189e577315 added copyright notice 1984-07-20 13:54:36 +00:00
sater
8b9ebd989f added rcsid
adapted to new archive updating style, with LIST and march and all that
1984-07-20 11:32:47 +00:00
sater
182f3ee338 Initial revision 1984-07-20 11:25:31 +00:00
sater
8707eb1715 added rcsid 1984-07-20 11:25:18 +00:00
sater
9935b1fc88 added copyright notice 1984-07-20 11:20:12 +00:00
sater
06249087bd removed copyright notice, wasn't really *written* by us. 1984-07-20 11:07:12 +00:00
sater
5e3c08728c added rcsid 1984-07-20 11:03:31 +00:00
sater
f54556ac0f Initial revision 1984-07-20 10:44:57 +00:00
sater
1a0102783f A sti 8 of a regdef8 token went into panic mode. Fixed. 1984-07-20 10:32:48 +00:00
sater
1e5056bcc0 to check long >= 0 or long < 0 it is enough to test high order word. Added.
anding and oring of long constants is much better now
dvu 2 and rmu 2 by positive constants is now done inline.
1984-07-19 16:50:27 +00:00
sater
96e8152f11 added rcsid 1984-07-19 15:03:30 +00:00
sater
7683ff7d03 Initial revision 1984-07-19 15:01:43 +00:00
sater
309ed81674 Archive made with archiver in environment ASAR if set, arch otherwise 1984-07-19 14:55:12 +00:00
sater
badfdeb5db removed #ifdef UNTESTED around logical instructions without arguments,
seems they were used ( which implicitly means tested ) after all
1984-07-19 14:03:49 +00:00
sater
ea793ccff5 Initial revision 1984-07-19 13:52:18 +00:00
sater
3c037725e9 added rcsid 1984-07-19 13:34:12 +00:00
sater
b28024573a changed name from comparchentry to compmodule 1984-07-19 13:22:36 +00:00
sater
320c575b54 Initial revision 1984-07-19 13:20:15 +00:00
sater
1e806d2a28 old code put back, now register handling is different again
actually old code never was removed, due to a misunderstanding
about comment conventions.
1984-07-19 13:12:03 +00:00
sater
18d72ffde3 makefile adapted to new style archive handling, RCS and all that 1984-07-19 13:11:36 +00:00
sater
53c19368d5 a setl instruction was changed to a setd
setl was just plain wrong
1984-07-19 13:09:53 +00:00
sater
fa6f4b86e3 Initial revision 1984-07-19 12:51:00 +00:00
bal
0f199294ae rcsid added 1984-07-19 11:50:29 +00:00
bal
ff6056a6b6 Initial revision 1984-07-19 11:50:28 +00:00
sater
92c1e38b42 Initial revision 1984-07-19 11:50:18 +00:00
bal
8bbb3ddca7 New implementation of GTO (without register save masks)
several optimizations added
1984-07-19 11:15:28 +00:00
bal
8fef858ce8 New implementation of GTO (without register save masks) 1984-07-19 11:07:15 +00:00
bal
39428d2028 rcsid added
several optimizations added
1984-07-19 11:02:06 +00:00
bal
e5895a2768 rcsid added
clr.w -(sp) generated in prolog if register save mask is 0
1984-07-19 10:57:19 +00:00
bal
250f0df7f7 Initial revision 1984-07-19 10:03:10 +00:00
bal
85c15fca29 Initial revision 1984-07-19 09:37:24 +00:00
sater
3422e2338c added patterns for ldc adi/ldc sbi with zero high order word
added patterns for *--p with p register
added patterns to generate cmpb to compare two bytes.
added patterns to use regvar to index global array
added patterns for lol inl
added patterns for external pointer increment/decrement
1984-07-18 16:47:24 +00:00
sater
e92ac2c6d3 The patterns to change a cii to cuu when dealing with a known positive
quantity was technically wrong. Changed to generate a cui.
1984-07-18 15:54:25 +00:00
sater
35fbddd030 added definition of index, to keep compiler happy 1984-07-18 14:14:46 +00:00
sater
c65b0f7044 removed recursive comments
removed NC with sti rules
added rule to reverse operands of adi 2
added rule to convert loc sbi to loc adi
added loc slu -> loc sli rule
added local++ rule
added rule for asping xsource2
added rule for csb when nothing on stack
1984-07-18 13:39:24 +00:00
sater
84fca60378 added rcsid
changed instruction label format to allow more than 256 procedures
1984-07-18 13:32:11 +00:00
sater
7c5508ddbd changed instruction label format to allow more than 256 procedures 1984-07-18 13:28:01 +00:00
sater
d33e4ac474 added rcsid
converted to recognize and generate new 0%o format
1984-07-18 13:14:18 +00:00
sater
0a4d372056 added patterns for unsigned shifting
added patterns to delay additive operations until after multiplicative,
  this can be useful for some register machines
1984-07-18 11:05:28 +00:00
sater
f98fe503a0 Improved error handling on unterminated strings 1984-07-18 11:04:58 +00:00
sater
4410480e32 added -f flags to all calls to rm 1984-07-16 15:29:48 +00:00
sater
97b50be407 added special patterns for:
1) long compared to constant ( ldc cms 4 zxx )
2) long increments ( ld? ldc adi 4 sd? )
3) autoincrement loads and stores ( lol lol adp stl loi/sti )
1984-07-16 14:39:21 +00:00
keie
f3d3393af3 *** empty log message *** 1984-07-16 09:36:12 +00:00
keie
32f55c5462 Added z8000 assembler manual. 1984-07-16 09:32:22 +00:00
sater
42c556cc1f added missing #endif
added two patterns, big improvement
added patterns for ciu and cui
some cosmetic change
1984-07-13 16:13:56 +00:00
keie
edcf39e999 *** empty log message *** 1984-07-13 15:20:58 +00:00
keie
ac940fe687 Added lines for DECUS cpp manual. 1984-07-13 15:19:19 +00:00
keie
a618660635 The check for a too high offset in a hol is repaired. 1984-07-13 15:03:05 +00:00
keie
965a2fa352 A bug in the exchange was repaired.
Exchanges across pseudo-instructions didn't work properly.
1984-07-13 15:01:23 +00:00
sater
d8238383ca Removed some patterns that have never been tested.
Now if someone uses them he will hear that it doesn't work.
That must be better then giving him code that probably won't work.
All these patterns had to do with things like adf without an argument
and things like that.
1984-07-13 14:55:37 +00:00
sater
f33edd402e Initial revision 1984-07-13 11:25:46 +00:00
sater
a4f3d3c503 Initial revision 1984-07-13 11:12:23 +00:00
sater
d1994a651b changed format of rcsid message 1984-07-12 15:18:13 +00:00
sater
ba79fb2a37 Initial revision 1984-07-12 15:16:23 +00:00
sater
743bbb551f added rcsid 1984-07-12 14:55:49 +00:00
sater
df7b70c37e changed explanation of .base pseudo
added rcsid
1984-07-12 14:55:22 +00:00
sater
58170d17d2 added rcsid
added lines for formatting new manuals
1984-07-12 14:53:30 +00:00
sater
b758fc47aa *** empty log message *** 1984-07-12 14:51:48 +00:00
sater
d608d58ad1 Initial revision 1984-07-12 14:14:54 +00:00
sater
cb1d7f7e96 *** empty log message *** 1984-07-12 14:08:27 +00:00
sater
0ae1957f80 added rcsid 1984-07-12 14:07:14 +00:00
sater
3671970cc5 added rcsid
added compilation of tstgto.p
1984-07-12 14:05:03 +00:00
sater
463090c3a4 Initial revision 1984-07-12 13:50:44 +00:00
keie
e1666e49b0 asprint is removed at cleanup time. 1984-07-12 13:24:02 +00:00
keie
3d2f1d3690 1 - Dump has a parameter.
2 - Dump are enabled.
1984-07-12 13:23:03 +00:00
keie
06a8899eec 1 - A header is treated as an unsigned number.
2 - The low order word of the size in archives is fetched as unsigned.
3 - Sizes are unsigned.
1984-07-12 13:20:48 +00:00
keie
3565805b63 Parameter added to dump preprocessor variable. 1984-07-12 12:58:18 +00:00
keie
207bd9dcf7 1 - Header fetch was changed to unsigned.
2 - Extra parentheses are needed by some compilers.
1984-07-12 12:57:36 +00:00
keie
e2482166f7 Initial revision 1984-07-12 12:48:33 +00:00
sater
af88eafe02 removed REGPATCH define 1984-07-12 11:03:18 +00:00
sater
8f9fb0ad77 added definition of newplb()
removed a tab from some string
1984-07-12 11:02:44 +00:00
sater
8a6604f224 Removed unbalanced quotes in comments, needed for new cpp 1984-07-12 10:50:47 +00:00
sater
6c021a0800 reworked to use ack instead of npc.
made more user-friendly (ha ha)
1984-07-12 10:42:33 +00:00
sater
2eeeba3225 Now lexical analyzer skips lines starting with #
to kill off remnants of some preprocessor.
1984-07-12 10:18:19 +00:00
sater
c79d077c3f added description of newplb macro.
Enlarged an example.
1984-07-12 10:13:56 +00:00
sater
6a1228a5cd The sequence:
lin 100
  cal $foo
  lin 101
used to have it's second lin lni'ed. This is obviously wrong.
A check is now made for procedure calls.
1984-07-12 09:29:49 +00:00
sater
b2d4b9d42d Replaced call to newilb after pro pseudo to call to newplb,
including retrofit for existing mach.h files
1984-07-12 09:26:24 +00:00
sater
60b6d9c00d Increased MAXINSTANCE in big memory model 1984-07-12 09:23:38 +00:00
keie
00a6b2f4c6 Added the entries for instructions with 32-bit arguments. 1984-07-02 16:04:26 +00:00
keie
0a797a2688 1 - added routines to read unsigned 16-bit numbers
2 - cleanup of writing of ABS block, was in error for wordsize>4.
3 - strings are now padded up to a multiple of the wordsize.
4 - the padding algorithm for alignment was in error for wordsize>2.
1984-07-02 16:01:50 +00:00
keie
2e3eb2f103 Not in the initial distribution. 1984-07-02 15:46:59 +00:00
keie
5ce6138a58 Added asprint to list of files to remove with 'clean'. 1984-07-02 15:46:06 +00:00
keie
82d0bd9091 1 - Altered an incorrect dependency for assrl.o
2 - Added asprint
1984-07-02 15:42:37 +00:00
keie
e1466b3e09 Initial revision 1984-07-02 15:35:56 +00:00
sater
51243ce443 Initial revision 1984-07-02 11:26:53 +00:00
sater
c6790d4142 Initial revision 1984-07-02 10:45:13 +00:00
sater
9a91288da9 Added missing .DE macro 1984-06-29 14:51:23 +00:00
sater
79d76cf153 Changed all occurrences of -ms into a macro $(MS) 1984-06-29 14:50:23 +00:00
sater
2a026953ff Initial revision 1984-06-29 14:46:39 +00:00
sater
fb9cd1ed17 Initial revision 1984-06-29 11:29:28 +00:00
sater
3efa053ae7 Initial revision 1984-06-29 11:21:50 +00:00
sater
f5b641009b Initial revision 1984-06-29 11:00:55 +00:00
sater
f3f3069f54 Fixed bug: after BRA instruction was optimized away the variable lastbra
pointed to the instruction following. This could lead to anything,
including bus errors. Lastbra is now reset to 0.
Bug discovered at Philips PMDS by Hans de Vries. The fix is also his.
Actually the function cleaninstr should be rewritten.
1984-06-28 10:40:09 +00:00
sater
ef3aa6fa57 added rcsid 1984-06-26 10:08:37 +00:00
sater
380aa1515e Initial revision 1984-06-26 10:03:31 +00:00
sater
2af94af5c6 Initial revision 1984-06-25 16:22:03 +00:00
sater
af55840493 Initial revision 1984-06-25 11:02:34 +00:00
em
3afc39c1ea The name cpp.new for the alternative C-preprocessor is
no longer needed.
1984-06-21 13:16:26 +00:00
keie
abde37e1fc artificial commit to compensate for changes in 93f3093f2b7e from a CVS
vendor branch
1984-06-21 13:13:10 +00:00
em
a8ee954405 Assembler peephole optimizer added. 1984-06-21 13:09:51 +00:00
keie
dc3874ad9d Ack assumed that files resulting from transformations
would not need to be fed through a pre-processor.
This assumption proved false. Ack was altered and allows
use of a pre-processor on files produced by other passes.
1984-06-21 11:29:22 +00:00
keie
c74da38c3d Adapted to use the new backend. 1984-06-21 11:26:10 +00:00
keie
f13d0d6c3e Adapted to the new C preprocessor that does NOT have
ANY default include directories like /usr/include.
1984-06-21 11:25:05 +00:00
keie
0c1ac8e7dd Initial revision 1984-06-21 11:24:08 +00:00
em
580b5f5d7f Added warning about forthcoming shift/reduce conflict 1984-06-21 11:13:28 +00:00
keie
1568cd2dbc The slightly altered error message format greatly
enhances use of the pascal compiler under emacs.
1984-06-21 11:10:16 +00:00
keie
05aa585c9a Also remove the program, it should be installed by now. 1984-06-21 11:09:51 +00:00
keie
80c6a9c771 Initial revision 1984-06-21 11:09:15 +00:00
3 changed files with 3267 additions and 303 deletions

3221
lang/pc/pem/pem.p Normal file

File diff suppressed because it is too large Load Diff

46
mach/pdp/cg/mach.h Normal file
View File

@@ -0,0 +1,46 @@
/* $Header$ */
/* The next define switches between codegeneration for an ACK assembler
* or for the standard UNIX V7 assembler.
* If on code is generated for the ACK assembler.
*/
/* #define ACK_ASS /* code for ACK assembler */
#ifdef ACK_ASS
#define COMMENTCHAR '!'
#define ex_ap(y) fprintf(codefile,".extern %s\n",y)
#else
#define COMMENTCHAR '/'
#define ex_ap(y) fprintf(codefile,".globl %s\n",y)
#endif
#define in_ap(y) /* nothing */
#define newplb(x) doplb(x)
#define newilb(x) fprintf(codefile,"%s:\n",x)
#define newdlb(x) fprintf(codefile,"%s:\n",x)
#ifdef ACK_ASS
#define newlbss(l,x) fprintf(codefile,"%s:.space 0%o\n",l,x);
#else
#define newlbss(l,x) fprintf(codefile,"%s:.=.+0%o\n",l,x);
#endif
#define cst_fmt "$0%o"
#define off_fmt "0%o"
#define ilb_fmt "I%03x%x"
#define dlb_fmt "_%d"
#define hol_fmt "hol%d"
#define hol_off "0%o+hol%d"
#ifdef ACK_ASS
#define con_cst(x) fprintf(codefile,".short 0%o\n",x)
#define con_ilb(x) fprintf(codefile,".short %s\n",x)
#define con_dlb(x) fprintf(codefile,".short %s\n",x)
#else
#define con_cst(x) fprintf(codefile,"0%o\n",x)
#define con_ilb(x) fprintf(codefile,"%s\n",x)
#define con_dlb(x) fprintf(codefile,"%s\n",x)
#endif
#define id_first '_'
#define BSS_INIT 0

View File

@@ -1,303 +0,0 @@
/*
* (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
*
*/
#include "ack.h"
#include "../../h/em_path.h"
#include "list.h"
#include "trans.h"
#include "grows.h"
#include "dmach.h"
#include "data.h"
#include <stdio.h>
/************************************************************************/
/* */
/* Read machine definitions and transformations */
/* */
/************************************************************************/
#define COMMENT '#'
#define VAR "var"
#define PASS "name"
#define IN "from"
#define OUT "to"
#define PROG "program"
#define MAPF "mapflag"
#define ARGS "args"
#define PROP "prop"
#define RUNT "rts"
#define NEEDT "need"
#define END "end"
extern growstring scanb();
extern growstring scanvars();
int getline() ;
int getinchar() ;
static char *ty_name ;
static char *bol ;
static char *inname ;
setlist(name) char *name ; {
/* Name is sought in the internal tables,
if not present, the a file of that name is sought
in first the current and then the EM Lib directory
*/
inname=name ;
open_in(name) ;
while ( getline() ) {
if ( strcmp(VAR,ty_name)==0 ) {
doassign(bol,(char *)0,0) ;
} else
if ( strcmp(PASS,ty_name)==0 ) {
intrf() ;
} else
error("unknown keyword %s",ty_name) ;
}
close_in();
#ifdef DEBUG
if ( debug>=3 ) vprint("End %s\n",name) ;
#endif
}
intrf() {
register trf *new ;
register char *ptr ;
growstring bline, vline ;
int twice ;
new= (trf *)getcore(sizeof *new) ;
new->t_name= keeps(bol) ;
for (;;) {
if ( !getline() ) {
fuerror("unexpected EOF on %s",inname) ;
}
twice= NO ;
if ( strcmp(ty_name,IN)==0 ) {
if ( new->t_in ) twice=YES ;
new->t_in= keeps(bol);
} else
if ( strcmp(ty_name,OUT)==0 ) {
if ( new->t_out ) twice=YES ;
new->t_out= keeps(bol);
} else
if ( strcmp(ty_name,PROG)==0 ) {
if ( new->t_prog ) twice=YES ;
bline= scanb(bol); /* Scan for \ */
vline= scanvars(gr_start(bline)); /* Scan for {} */
gr_throw(&bline);
new->t_prog= gr_final(&vline);
clr_noscan(new->t_prog);
} else
if ( strcmp(ty_name,MAPF)==0 ) {
/* First read the mapflags line
and scan for backslashes */
bline= scanb(bol) ;
l_add(&new->t_mapf,gr_final(&bline)) ;
} else
if ( strcmp(ty_name,ARGS)==0 ) {
if ( new->t_argd ) twice=YES ;
bline= scanb(bol) ;
new->t_argd= keeps(gr_start(bline)) ;
gr_throw(&bline) ;
} else
if ( strcmp(ty_name,PROP)==0 ) {
for ( ptr=bol ; *ptr ; ptr++ ) {
switch( *ptr ) {
case C_IN: new->t_stdin= YES ; break ;
case C_OUT: new->t_stdout= YES ; break ;
case 'P': new->t_isprep= YES ; break ;
case 'p': new->t_prep= YES ; break ;
case 'm': new->t_prep= MAYBE ; break ;
case 'O': new->t_optim= YES ; break ;
case 'C': new->t_combine= YES ; break ;
default :
error("Unkown option %c in %s for %s",
*ptr,new->t_name,inname) ;
break ;
}
}
} else
if ( strcmp(ty_name,RUNT)==0 ) {
if ( new->t_rts ) twice=YES ;
new->t_rts= keeps(bol) ;
} else
if ( strcmp(ty_name,NEEDT)==0 ) {
if ( new->t_needed ) twice=YES ;
new->t_needed= keeps(bol) ;
} else
if ( strcmp(ty_name,END)==0 ) {
break ;
} else {
fuerror("illegal keyword %s %s",ty_name,bol);
}
if ( twice ) {
werror("%s: specified twice for %s",
ty_name, new->t_name) ;
}
}
if ( ! ( new->t_name && new->t_out && new->t_prog ) ) {
fuerror("insufficient specification for %s in %s",
new->t_name,inname) ;
}
if ( ! new->t_argd ) new->t_argd="" ;
#ifdef DEBUG
if ( debug>=3 ) {
register list_elem *elem ;
vprint("%s: from %s to %s '%s'\n",
new->t_name,new->t_in,new->t_out,new->t_prog) ;
vprint("\targs: ") ; prns(new->t_argd) ;
scanlist( l_first(new->t_mapf), elem ) {
vprint("\t%s\n",l_content(*elem)) ;
}
if ( new->t_rts ) vprint("\trts: %s\n",new->t_rts) ;
if ( new->t_needed ) vprint("\tneeded: %s\n",new->t_needed) ;
}
#endif
l_add(&tr_list,(char *)new) ;
}
/************************** IO from core or file *******************/
static int incore ;
static growstring rline ;
static FILE *infile ;
static char *inptr ;
open_in(name) register char *name ; {
register dmach *cmac ;
gr_init(&rline) ;
for ( cmac= massoc ; cmac->ma_index!= -1 ; cmac++ ) {
if ( strcmp(name,cmac->ma_name)==0 ) {
incore=YES ;
inptr= &intable[cmac->ma_index] ;
return ;
}
}
/* Not in core */
incore= NO ;
#ifdef NEW
gr_cat(&rline,EM_DIR) ;
gr_cat(&rline,"/lib/n_ack/") ;
#else
gr_cat(&rline,ACK_DIR); gr_cat(&rline,"/") ;
#endif
gr_cat(&rline,name) ;
infile= fopen(gr_start(rline),"r") ;
#ifdef NEW
if ( !infile ) {
/* Try to read EM_DIR/lib/MACH/plan */
gr_throw(&rline) ;
gr_cat(&rline,EM_DIR) ;
gr_cat(&rline,"/lib/") ; gr_cat(&rline,name) ;
gr_cat(&rline,"/plan") ;
infile= fopen(gr_start(rline),"r") ;
}
#endif
if ( !infile ) {
infile= fopen(name,"r") ;
}
if ( infile==NULL ) {
fuerror("Cannot find description for %s",name) ;
}
}
close_in() {
if ( !incore ) fclose(infile) ;
gr_throw(&rline) ;
}
char *readline() {
/* Get a line from the input,
return 0 if at end,
The line is stored in a volatile buffer,
a pointer to the line is returned.
*/
register int nchar ;
enum { BOL, ESCAPE, SKIPPING, MOL } state = BOL ;
gr_throw(&rline) ;
for (;;) {
nchar= getinchar() ;
if ( nchar==EOF ) {
if ( state!=BOL ) {
werror("incomplete line in %s", inname) ;
}
return 0 ;
}
if ( state==SKIPPING ) {
if ( nchar=='\n' ) {
state= MOL ;
} else {
continue ;
}
}
if ( state==ESCAPE ) {
switch( nchar ) {
case '\n' :
break ;
default :
gr_add(&rline,BSLASH) ;
case COMMENT :
case BSLASH :
gr_add(&rline,nchar) ;
break ;
}
state= MOL ;
continue ;
}
switch ( nchar ) {
case '\n' : gr_add(&rline,0) ;
return gr_start(rline) ;
case COMMENT : state= SKIPPING ;
break ;
case BSLASH : state= ESCAPE ;
break ;
default : gr_add(&rline,nchar) ;
state= MOL ;
}
}
}
int getinchar() {
if ( incore ) {
if ( *inptr==0 ) return EOF ;
return *inptr++ ;
}
return getc(infile) ;
}
int getline() {
register char *c_ptr ;
do {
if ( (c_ptr=readline())==(char *)0 ) return 0 ;
ty_name= skipblank(c_ptr) ;
} while ( *ty_name==0 ) ;
c_ptr= firstblank(ty_name) ;
if ( *c_ptr ) {
*c_ptr++ =0 ;
c_ptr= skipblank(c_ptr) ;
}
bol= c_ptr ;
return 1 ;
}