install.doc 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232
  1. .\" $Header$
  2. .if n .nr PD 1v
  3. .if n .nr LL 78m
  4. .if n .ll 78m
  5. .TL
  6. Amsterdam Compiler Kit Installation Guide
  7. .AU
  8. Ed Keizer
  9. (revised for 3rd, 4th and 5th distribution by Ceriel Jacobs)
  10. .AI
  11. Vakgroep Informatica
  12. Vrije Universiteit
  13. Amsterdam
  14. .NH
  15. Introduction
  16. .PP
  17. This document
  18. describes the process of installing the Amsterdam Compiler Kit (ACK).
  19. It depends on the combination of hard- and software how
  20. hard it will be to install the Kit.
  21. This description is intended for a Sun-3 or SPARC workstation.
  22. Installation on VAXen running Berkeley
  23. .UX
  24. or Ultrix,
  25. Sun-2 systems and most System V
  26. .UX
  27. systems should be easy.
  28. As of this distribution, installation on PDP-11's or other
  29. systems with a small address space is no longer supported.
  30. See section 8 for installation on other systems.
  31. .NH
  32. The ACK installation process
  33. .PP
  34. In the ACK installation process, three directory trees are used:
  35. .IP "-"
  36. the ACK source tree. This is the tree on the ACK distribution medium.
  37. For the rest of this document, we will refer to this directory
  38. as $SRC_HOME;
  39. .IP "-"
  40. a configuration tree. This tree is built by the installation process and
  41. is used to do compilations in. Its structure reflects that of the source tree,
  42. but this tree will mostly contain Makefiles and relocatable objects.
  43. For the rest of this document, we will refer to this directory
  44. as $CONFIG;
  45. .IP "-"
  46. an ACK users tree. This tree is also built by the installation process.
  47. For the rest of this document, we will refer to this directory
  48. as $TARGET_HOME;
  49. .LP
  50. After installation,
  51. the directories in $TARGET_HOME contain the following information:
  52. .if n .sp 1
  53. .if n .nr PD 0
  54. .IP "bin" 14
  55. the few utilities that knot things together.
  56. See the section about "Commands".
  57. .IP "lib"
  58. root of a tree containing almost all libraries used by
  59. commands.
  60. Files specific to a certain machine are collected in one subtree
  61. per machine. E.g. "lib/pdp", "lib/z8000".
  62. The names used here are the same names as used for subtrees
  63. of "$SRC_HOME/mach".
  64. .IP "lib/descr"
  65. command descriptor files used by the program ack.
  66. .IP "lib/LLgen"
  67. files used by the LL(1) parser generator.
  68. .IP "lib/flex"
  69. files used by the lexical analyzer generator Flex.
  70. .IP "lib/m2"
  71. definition modules for Modula-2.
  72. .IP "lib.bin"
  73. root of a tree containing almost all binaries used by
  74. commands.
  75. All programs specific to a certain machine are collected in one subtree
  76. per machine. E.g. "lib.bin/pdp", "lib.bin/z8000".
  77. The names used here are the same names as used for subtrees
  78. of "$SRC_HOME/mach".
  79. .IP "lib.bin/ego"
  80. files used by the global optimizer.
  81. .IP "lib.bin/lint"
  82. binaries for the lint passes and lint libraries.
  83. .IP "lib.bin/ceg"
  84. files used by the code-expander-generator.
  85. .IP "etc"
  86. contains the file "ip_spec.t" needed for EM interpreters and EM documentation.
  87. .IP "config"
  88. contains two include files:
  89. .TS
  90. l l.
  91. em_path.h path names used by \fIack\fP, intended for all utilities
  92. local.h various definitions for local versions
  93. .TE
  94. These include files are specific for the current machine, so they
  95. are in a separate directory.
  96. .IP "include/_tail_cc"
  97. .br
  98. include files needed by modules
  99. in the C library from lang/cem/libcc.
  100. .IP "include/tail_ac"
  101. .br
  102. include files for ANSI C.
  103. .IP "include/occam"
  104. include files for occam.
  105. .IP "include/_tail_mon"
  106. .br
  107. more or less system independent include files needed by modules
  108. in the library lang/cem/libcc/mon.
  109. .IP "h"
  110. the #include files for:
  111. .TS
  112. l l.
  113. arch.h definition of the ACK archive format
  114. as_spec.h used by EM assembler and interpreters
  115. bc_io.h used by the Basic run-time system
  116. bc_string.h used by the Basic run-time system
  117. cg_pattern.h used by the backend program "cg" and its bootstrap
  118. cgg_cg.h used by the backend program "ncg" and its bootstrap
  119. em_abs.h contains trap numbers and address for lin and fil
  120. em_ego.h definition of names for some global optimizer
  121. messages
  122. em_flag.h definition of bits in array em_flag in
  123. $TARGET_HOME/lib.bin/em_data.a. Describes parameters
  124. effect on flow of instructions
  125. em_mes.h definition of names for mes pseudo numbers
  126. em_mnem.h instruction => compact mapping
  127. em_pseu.h pseudo instruction => compact mapping
  128. em_ptyp.h useful for compact code reading/writing,
  129. defines classes of parameters
  130. em_reg.h definition of mnemonics indicating register type
  131. em_spec.h definition of constants used in compact code
  132. ip_spec.h used by programs that read e.out files
  133. m2_traps.h used by the Modula-2 run-time system
  134. ocm_chan.h used by the occam run-time system
  135. ocm_parco.h used by the occam run-time system
  136. ocm_proc.h used by the occam run-time system
  137. out.h defines the ACK a.out format
  138. pc_err.h definitions of error numbers in Pascal
  139. pc_file.h macro's used in file handling in Pascal
  140. pc_math.h used by the Pascal runtime system
  141. ranlib.h defines symbol table format for archives
  142. stb.h defines debugger symbol table types
  143. .TE
  144. .IP "modules"
  145. root of a tree containing modules for compiler writers.
  146. .IP "modules/man"
  147. manual pages for all modules.
  148. .IP "modules/lib"
  149. contains module objects.
  150. .IP "modules/h"
  151. include files for some of the modules.
  152. .IP "modules/pkg"
  153. include files for some of the modules.
  154. .IP "doc"
  155. this directory contains the unformatted documents for the Kit.
  156. A list of the available documents can be found in the last section.
  157. These documents must be processed by [nt]roff.
  158. .IP "man"
  159. man files for various utilities.
  160. .if n .nr PD 1v
  161. .LP
  162. When installing ACK on several types of machines with a shared file system,
  163. it may be useful to know that the "doc", "etc", "h",
  164. "include", "lib" and "man" sub-directories do not depend on this
  165. particular installation. They do not contain binaries or path-dependent
  166. information. These directories can therefore be shared between the
  167. ACK installations. This can be accomplished by creating the tree and
  168. suitable symbolic links before starting the installation process.
  169. .LP
  170. For instance, let us say there is a file-system that is accessible from
  171. the different machines as "/usr/share/local", and the ACK binary tree
  172. must be installed in "/usr/local/ack". In this case, proceed as follows:
  173. .IP \-
  174. create a directory "/usr/share/local/ack", with subdirectories
  175. "doc", "etc", "h", "include", "lib" and "man".
  176. .IP \-
  177. create a directory "/usr/local/ack" and
  178. then create symbolic links "doc" to "/usr/share/local/ack/doc", etc.
  179. .LP
  180. If this is done on all machines on which ACK will be installed, the
  181. machine-independent part only has to be installed once, preferably
  182. on the fastest processor (it takes a long time to install all libraries).
  183. .LP
  184. The directories in the source tree contain the following information:
  185. .if n .sp 1
  186. .if n .nr PD 0
  187. .IP "bin" 14
  188. source of some shell-scripts.
  189. .IP "lib"
  190. mostly description files for the "ack" program.
  191. .IP "etc"
  192. the main description of EM sits here.
  193. Files (e.g. em_table) describing
  194. the opcodes and pseudos in use,
  195. the operands allowed, effect in stack etc. etc.
  196. .IP "mach"
  197. just there to group the directories with all sources for each machine.
  198. The section about "Machines" of this manual indicates which subdirectories
  199. are used for which systems.
  200. .br
  201. These directories have subdirectories named:
  202. .in +3n
  203. .TS
  204. l l.
  205. cg the backend (*.m => *.s)
  206. ncg the new backend (*.m => *.s)
  207. as the assembler (*.s => *.o) or
  208. assembler/linker (*.s + libraries => a.out)
  209. cv conversion programs for a.out files
  210. dl down-load programs
  211. top the target optimizer
  212. int source for an interpreter
  213. libbc to create Basic run-time system and libraries
  214. libcc to create C run-time system and libraries
  215. libcc.ansi to create ANSI C run-time system and libraries
  216. libpc to create Pascal run-time system and libraries
  217. libf77 to create Fortran run-time system and libraries
  218. libm2 to create Modula-2 run-time system and libraries
  219. liboc to create occam run-time system and libraries
  220. libem EM runtime system, only depending on CPU type
  221. libend library defining end, edata, etext
  222. libfp to create floating point library
  223. libdb to create debugger support library
  224. libsys system-dependent EM library
  225. libce fast cc-compatible C compiler library support
  226. ce code expander (fast back-end)
  227. test various tests
  228. .TE
  229. .in -3n
  230. Actually, some of these directories will only appear in the configuration tree.
  231. .br
  232. The directory proto contains files used by most machines,
  233. like machine-independent sources and Makefiles.
  234. .in +3n
  235. .TS
  236. l l.
  237. mach/proto/cg current backend sources
  238. mach/proto/ncg new backend sources
  239. mach/proto/as assembler sources
  240. mach/proto/top target optimizer sources
  241. mach/proto/fp floating point package sources
  242. mach/proto/libg makefiles for compiling libraries
  243. mach/proto/grind machine-independent debugger support
  244. .TE
  245. .IP "emtest"
  246. contains prototype of em test set.
  247. .IP "lang"
  248. just there to group the directories for all front-ends.
  249. .IP "lang/pc"
  250. the Pascal front-end.
  251. .IP "lang/pc/libpc"
  252. .br
  253. source of Pascal run-time system (in EM or C).
  254. .IP "lang/pc/test"
  255. some test programs written in Pascal.
  256. .IP "lang/pc/comp"
  257. the Pascal compiler proper.
  258. .IP "lang/cem"
  259. the C front-end.
  260. .IP "lang/cem/libcc"
  261. .br
  262. directories with sources of C runtime system, libraries (in EM or C).
  263. .IP "lang/cem/libcc/gen"
  264. .br
  265. sources for routines in chapter III of
  266. .UX
  267. programmers manual,
  268. excluding stdio.
  269. .IP "lang/cem/libcc/stdio"
  270. .br
  271. stdio sources.
  272. .IP "lang/cem/libcc/math"
  273. .br
  274. sources for mathematical routines, normally available with the
  275. \fB-lm\fP option to \fIcc\fP.
  276. .IP "lang/cem/libcc/mon"
  277. .br
  278. sources for routines in chapter II, mostly written in EM.
  279. .IP "lang/cem/cemcom"
  280. .br
  281. the compiler proper.
  282. .IP "lang/cem/cemcom.ansi"
  283. .br
  284. the ANSI C compiler proper.
  285. .IP "lang/cem/cpp.ansi"
  286. .br
  287. the ANSI C preprocessor.
  288. .IP "lang/cem/libcc.ansi"
  289. .br
  290. the ANSI C library sources.
  291. .IP "lang/cem/ctest"
  292. .br
  293. the C test set.
  294. .IP "lang/cem/ctest/cterr"
  295. .br
  296. programs developed for pinpointing previous errors.
  297. .IP "lang/cem/ctest/ct*"
  298. .br
  299. the test programs.
  300. .IP "lang/cem/lint"
  301. a C program checker.
  302. .IP "lang/cem/lint/lpass1"
  303. .br
  304. the first pass of lint.
  305. .IP "lang/cem/lint/lpass1.ansi"
  306. .br
  307. the first pass of lint, this time for ANSI C.
  308. .IP "lang/cem/lint/lpass2"
  309. .br
  310. the second pass of lint, shared between ANSI C and "old-fashioned" C.
  311. .IP "lang/cem/lint/llib"
  312. .br
  313. programs for producing lint libraries.
  314. .IP "lang/basic"
  315. the Basic front-end.
  316. .IP "lang/basic/src"
  317. .br
  318. the compiler proper.
  319. .IP "lang/basic/lib"
  320. .br
  321. the Basic run-time library source.
  322. .IP "lang/basic/test"
  323. .br
  324. various Basic programs.
  325. .IP "lang/occam"
  326. the occam front-end.
  327. .IP "lang/occam/comp"
  328. .br
  329. the compiler proper.
  330. .IP "lang/occam/lib"
  331. .br
  332. source of occam run-time system (in EM or C).
  333. .IP "lang/occam/test"
  334. .br
  335. some occam programs.
  336. .IP "lang/m2"
  337. the Modula-2 front-end.
  338. .IP "lang/m2/comp"
  339. the compiler proper.
  340. .IP "lang/m2/libm2"
  341. source of Modula-2 run-time system (in EM, C and Modula-2).
  342. .IP "lang/m2/m2mm"
  343. the Modula-2 makefile generator.
  344. .IP "lang/m2/test"
  345. some Modula-2 example programs.
  346. .IP "lang/fortran"
  347. the Fortran front-end (translates Fortran into C). This compiler is not
  348. a part of ACK, but is included because it adds another language.
  349. The Fortran system carries the following copyright notice:
  350. .IP ""
  351. .nf
  352. /**************************************************************
  353. Copyright 1990, 1991 by AT&T Bell Laboratories and Bellcore.
  354. Permission to use, copy, modify, and distribute this software
  355. and its documentation for any purpose and without fee is hereby
  356. granted, provided that the above copyright notice appear in all
  357. copies and that both that the copyright notice and this
  358. permission notice and warranty disclaimer appear in supporting
  359. documentation, and that the names of AT&T Bell Laboratories or
  360. Bellcore or any of their entities not be used in advertising or
  361. publicity pertaining to distribution of the software without
  362. specific, written prior permission.
  363. AT&T and Bellcore disclaim all warranties with regard to this
  364. software, including all implied warranties of merchantability
  365. and fitness. In no event shall AT&T or Bellcore be liable for
  366. any special, indirect or consequential damages or any damages
  367. whatsoever resulting from loss of use, data or profits, whether
  368. in an action of contract, negligence or other tortious action,
  369. arising out of or in connection with the use or performance of
  370. this software.
  371. **************************************************************/
  372. .fi
  373. .IP "lang/fortran/comp"
  374. .br
  375. the compiler proper.
  376. .IP "lang/fortran/lib"
  377. .br
  378. source of Fortran runtime system and libraries.
  379. .IP "fast"
  380. contains sub-directories for installing the fast ACK compatible compilers.
  381. .IP "fast/driver"
  382. .br
  383. contains the sources of the fast ACK compatible compiler drivers.
  384. .IP "fcc"
  385. contains the fast cc-compatible C compiler for SUN-3 and VAX.
  386. .IP "util"
  387. contains directories with sources for various utilities.
  388. .IP "util/ack"
  389. the program used for translation with the Kit.
  390. .IP "util/opt"
  391. the EM peephole optimizer (*.k => *.m).
  392. .IP "util/ego"
  393. the global optimizer.
  394. .IP "util/topgen"
  395. the target optimizer generator.
  396. .IP "util/misc"
  397. decode (*.[km] => *.e) + encode (*.e => *.k).
  398. .IP "util/data"
  399. the C-code for $TARGET_HOME/lib.bin/em_data.a.
  400. These sources are created by the Makefile in `etc`.
  401. .IP "util/ass"
  402. the EM assembler (*.[km] + libraries => e.out).
  403. .IP "util/arch"
  404. the archivers to be used for all EM utilities.
  405. .IP "util/cgg"
  406. a program needed for compiling backends.
  407. .IP "util/ncgg"
  408. a program needed for compiling the newest backends.
  409. .IP "util/cpp"
  410. the C preprocessor.
  411. .IP "util/shf"
  412. various shell files.
  413. .IP "util/LLgen"
  414. the extended LL(1) parser generator.
  415. .IP "util/amisc"
  416. contains some programs handling ACK a.out format, such as anm, asize.
  417. .IP "util/cmisc"
  418. contains some programs to help in resolving name conflicts, and
  419. a dependency generator for makefiles.
  420. .IP "util/led"
  421. the ACK link-editor, reading ACK relocatable a.out format, and writing
  422. ACK a.out format.
  423. .IP "util/int"
  424. an EM interpreter, written in C. Very useful for checking out software,
  425. but slow.
  426. .IP "util/ceg"
  427. code expander generator.
  428. .IP "util/grind"
  429. a symbolic debugger.
  430. .IP "util/byacc"
  431. this is Berkeley yacc, in the public domain.
  432. .IP "util/flex"
  433. this is a replacement for lex. It carries the following copyright notice:
  434. .IP ""
  435. .nf
  436. Copyright (c) 1990 The Regents of the University of California.
  437. All rights reserved.
  438. This code is derived from software contributed to Berkeley by
  439. Vern Paxson.
  440. The United States Government has rights in this work pursuant
  441. to contract no. DE-AC03-76SF00098 between the United States
  442. Department of Energy and the University of California.
  443. Redistribution and use in source and binary forms are permitted
  444. provided that: (1) source distributions retain this entire
  445. copyright notice and comment, and (2) distributions including
  446. binaries display the following acknowledgement: ``This product
  447. includes software developed by the University of California,
  448. Berkeley and its contributors'' in the documentation or other
  449. materials provided with the distribution and in all advertising
  450. materials mentioning features or use of this software. Neither the
  451. name of the University nor the names of its contributors may be
  452. used to endorse or promote products derived from this software
  453. without specific prior written permission.
  454. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  455. IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  456. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  457. PURPOSE.
  458. .fi
  459. .ne 4
  460. .if n .nr PD 1v
  461. .LP
  462. All path names mentioned in the text of this document are relative to
  463. $SRC_HOME, unless they start with '/' or one of $SRC_HOME,
  464. $TARGET_HOME or $CONFIG.
  465. .NH
  466. Restoring the ACK tree
  467. .PP
  468. The process of installing the Amsterdam Compiler Kit is quite simple.
  469. The first step is to restore the Amsterdam Compiler Kit
  470. distribution tree structure.
  471. Proceed as follows
  472. .IP " \-" 10
  473. Create a directory, for example /usr/share/local/src/ack, on a device
  474. with at least 15 Megabytes left. This directory will be $SRC_HOME.
  475. .IP " \-"
  476. Change to that directory (cd ...).
  477. .IP " \-"
  478. Extract all files from the distribution medium, for instance
  479. magtape:
  480. \fBtar x\fP.
  481. .IP " \-"
  482. Keep a copy of the original distribution to be able to repeat the process
  483. of installation in case of disasters.
  484. This copy is also useful as a reference point for diff-listings.
  485. .NH
  486. Adapting ACK to the local system
  487. .PP
  488. Before compiling the sources in the Kit some installation dependent
  489. actions have to be taken.
  490. Most of these are performed by an interactive shell script in the file
  491. .I $SRC_HOME/first/first.
  492. Calling this script should be done
  493. from another directory, for instance an empty directory which will later
  494. become $CONFIG.
  495. .LP
  496. The actions of the
  497. .I first
  498. script are:
  499. .if n .sp 1
  500. .if n .nr PD 0
  501. .IP \-
  502. Asking for the path names of the ACK source directory ($SRC_HOME), the
  503. configuration directory ($CONFIG), and the ACK users directory ($TARGET_HOME).
  504. About 5M are needed for the configuration tree. The disk space needed
  505. for the ACK users tree depends on which front-ends and back-ends are to be
  506. installed.
  507. For instance, on our SPARC systems
  508. we have installed all languages and 6 back-ends, including the
  509. system-independent part. This amounts to about 16M.
  510. On our SUN-3 systems, we have installed all front-ends and 5 back-ends,
  511. but only the machine-dependent part. The machine-independent directories are
  512. symbolic links to the SPARC ACK users tree.
  513. We also have the fast ACK compilers
  514. installed on the SUN-3's.
  515. The total amount of disk-space used is less than 8M.
  516. .IP \-
  517. Asking for what type of system the binary tree must be produced for
  518. and creating the shell script "ack_sys" in the Kit's bin directory.
  519. Several utilities make use of "ack_sys" to determine the type of
  520. system.
  521. The current choice is between:
  522. .TS
  523. c c c
  524. l l l.
  525. answer system type default machine
  526. vax_bsd4_1a VAX11 + BSD4.1a vax4
  527. vax_bsd4_2 VAX11 + BSD4.2 vax4
  528. vax_sysV_2 VAX11 + System V.2 vax4
  529. i386 Intel 80386 system + Xenix System V i386
  530. sun3 Sun-3 Motorola 68020 workstation sun3
  531. sun2 Sun-2 Motorola 68010 workstation sun2
  532. m68_sysV_0 68000 + Uniplus System V.0 mantra
  533. m68020 Motorola 68020 VME131 + System V/68 R2V2.1 m68020
  534. sparc Sun-4 or SPARC workstation running SunOs 4 sparc
  535. sparc_solaris Sun-4 or SPARC workstation running Solaris 2 sparc_solaris
  536. ANY Neither of the above ???
  537. .TE
  538. For some of these, the installation procedure has not been tested, as
  539. we don't have them.
  540. For others, the installation procedure has only been tested with earlier
  541. distributions, as we don't have those systems anymore.
  542. However, the sun3 and sparc systems are known to behave reasonably.
  543. The Sun systems should run SunOs Release 3.0 or newer.
  544. The i386 choice may also be used for Intel 80386 or 80486 systems
  545. running
  546. .UX
  547. System V Release 4. These systems are also able to run Xenix System V
  548. binaries.
  549. If the target system is not on this list, choose one that comes close.
  550. If none of them come close, use the "ANY" choice.
  551. For ANY, any name can be used,
  552. but the Kit will not be able to compile programs for the target system.
  553. See the section about "compilation
  554. on a different machine".
  555. .IP \-
  556. Setting the default machine for which code is
  557. produced to the local type of system according to the table above.
  558. This in done in the file "$TARGET_HOME/config/local.h".
  559. See also section 9.1.
  560. .IP \-
  561. Asking for things that don't have to be installed.
  562. .IP \-
  563. Producing a shell script called "INSTALL" that will take care of the
  564. ACK installation process.
  565. .NH
  566. Compiling the Kit
  567. .PP
  568. The next step in the installation process is to run the "INSTALL"
  569. shell-script. When using a Bourne-shell, type:
  570. .DS
  571. sh INSTALL > INSTALL.out 2>&1 &
  572. .DE
  573. When using a C-shell, type:
  574. .DS
  575. sh INSTALL >& INSTALL.out &
  576. .DE
  577. This shell-script performs the following steps:
  578. .if n .sp 1
  579. .if n .nr PD 0
  580. .IP \-
  581. Produce a configuration tree ($CONFIG), reflecting the structure of the
  582. source tree.
  583. .IP \-
  584. Produce Makefiles in $CONFIG.
  585. As mentioned before, compilations
  586. will be done in the configuration tree, not in the source tree.
  587. Most configuration directories will have Makefiles
  588. used to compile and install the programs in that
  589. directory.
  590. All programs needed for compilation and/or cross compilation
  591. with the Kit are installed in $TARGET_HOME by these Makefiles.
  592. These Makefiles are produced from corresponding files called
  593. "proto.make" in the source tree. In fact, the "proto.make" files
  594. are almost complete Makefiles, except for some macro definitions that
  595. are collected by the \fIfirst\fP script.
  596. The Makefiles adhere to a standard which is described in the
  597. section 9.
  598. .IP \-
  599. Copy "Action" files to the configuration tree and editing them to
  600. reflect the choices concerning the parts of ACK that have to be
  601. installed. "Action" files are described below.
  602. .IP \-
  603. Copy part of the source tree to the ACK users tree (include files,
  604. manual pages, documentation, et cetera).
  605. .IP \-
  606. Calling the "TakeAction" script.
  607. All these Makefiles do not have to be called separately.
  608. We wrote a shell script calling the make's needed to install
  609. the whole Kit.
  610. This script consists of the file $SRC_HOME/TakeAction
  611. and a few files called Action in some configuration directories.
  612. The Action files describe in a very simple form which actions
  613. have to be performed in which directories.
  614. The default action is to start "make install && make clean".
  615. The output of each make is diverted to a file called "Out"
  616. in the same directory as the make was started in.
  617. If the make was successful (return code 0) the Out file is removed
  618. and the script TakeAction produces a small message indicating
  619. that it succeeded in fulfilling its goal.
  620. If the make was not successful (any other return code) the Out file
  621. is left alone for further examination and the script TakeAction
  622. produces a small message indicating that it failed.
  623. .br
  624. For some programs the scripts already know they can't be
  625. installed on the local type of system.
  626. In that case they produce a message "Sorry, ....." and
  627. happily proceed with further installation commands.
  628. .if n .sp 1
  629. .if n .nr PD 1v
  630. .LP
  631. Installation of the Kit might take anything from a few
  632. hours to more than a day, depending on the speed of the local machine and
  633. what must be installed.
  634. .LP
  635. If the installation succeeded, the Kit is ready to be used.
  636. Read section 6 and the manuals provided
  637. with the Kit (in the $TARGET_HOME/man directory) on how to use it.
  638. .NH 2
  639. Problems
  640. .NH 3
  641. on Unisoft m68000 systems.
  642. .PP
  643. The Unisoft C compiler has a bug which impedes the correct
  644. translation of the peephole optimizer.
  645. For a more detailed description of this phenomenon see
  646. the file "$SRC_HOME/mach/m68k2/Unisoft_bug".
  647. (This observation was made in 1985 or so, so it is probably
  648. no longer true).
  649. .NH 3
  650. with backends
  651. .PP
  652. The backends for the PDP11, VAX, Motorola 68000 and 68020,
  653. SPARC, Intel 8086, and Intel 80386
  654. have been heavily used by ourselves and are well tested.
  655. The backends for the other machines are known to run our own
  656. test programs,
  657. but might reveal errors when more heavily used.
  658. .NH 2
  659. An example output of TakeAction.
  660. .LP
  661. .sp 1
  662. .nf
  663. System definition -- done
  664. EM definition library -- done
  665. C utilities -- done
  666. Flex lexical analyzer generator -- done
  667. Yacc parser generator -- done
  668. system-call interface module -- done
  669. .
  670. .
  671. .
  672. EM Global optimizer -- done
  673. ACK archiver -- done
  674. Program 'ack' -- done
  675. Bootstrap for backend tables -- done
  676. Bootstrap for newest form of backend tables -- done
  677. .
  678. .
  679. .
  680. C frontend -- done
  681. ANSI-C frontend -- done
  682. ANSI-C preprocessor -- done
  683. ANSI-C header files -- done
  684. Failed for LINT C program checker, see lang/cem/lint/Out
  685. Pascal frontend -- done
  686. Basic frontend -- done
  687. .
  688. .
  689. .
  690. Vax 4-4 assembler -- done
  691. Vax 4-4 backend -- done
  692. Vax target optimizer -- done
  693. ACK a.out to VAX a.out conversion program -- done
  694. Sorry, Vax code expander library can only be made on vax* systems
  695. Vax 4-4 EM library -- done
  696. Vax 4-4 debugger support library -- done
  697. Vax 4-4 etext,edata,end library -- done
  698. Vax 4-4 systemcall interface -- done
  699. .
  700. .
  701. .
  702. .sp 1
  703. .fi
  704. .LP
  705. The lines starting with "Sorry, " indicate that certain programs cannot
  706. be translated on the local machine.
  707. The lines starting with "Failed for" indicate
  708. that certain programs/libraries were expected to,
  709. but did not compile.
  710. In this example, the installation of LINT failed.
  711. To repeat a certain part of the installation, look in
  712. the Action file, which resides in the root of the configuration tree,
  713. for the directory in which that part is to be found.
  714. If that directory contains an Action file issue the command
  715. "sh $CONFIG/bin/TakeAction", otherwise type "make install".
  716. .NH
  717. Commands
  718. .PP
  719. The following commands are available in the $TARGET_HOME/bin directory after compilation
  720. of the Kit:
  721. .IP "\fIack\fP, \fIacc\fP, \fIabc\fP, \fIapc\fP, \fIocm\fP, \fIm2\fP, \fIf2c\fP and their links" 14
  722. .br
  723. the names mentioned here can be used to compile Pascal, C, etc... programs.
  724. Most of the links can be used to generate code for a particular
  725. machine.
  726. See also the section about "Machines".
  727. .IP \fIarch\fP
  728. the archiver used for the EM- and universal assembler/loader.
  729. .IP \fIaal\fP
  730. the archiver used for ACK objects.
  731. .IP \fIem\fP
  732. this program selects a interpreter to execute an e.out file.
  733. Interpreters exist for PDP-11 and Motorola 68000 systems.
  734. .IP \fIeminform\fP
  735. the program to unravel the post-mortem information of
  736. the EM interpretator for the PDP-11.
  737. .IP \fILLgen\fP
  738. the LL(1) parser generator.
  739. .IP \fIack_sys\fP
  740. a shell script producing an identification of the target system.
  741. Used by some utilities to determine what is, and what is
  742. not feasible on the target system.
  743. .IP \fImarch\fP
  744. a shell script used while compiling libraries.
  745. .IP "\fIasize\fP, \fIanm\fP, \fIastrip\fP"
  746. .br
  747. do the same as \fIsize\fP, \fInm\fP and \fIstrip\fP, but for ACK object format.
  748. .IP \fImkdep\fP
  749. a dependency generator for makefiles.
  750. .IP "\fIcid\fP, \fIprid\fP, \fIcclash\fP"
  751. .br
  752. some utilities for handling name clashes in C programs. Some
  753. systems have C-compilers with only 7 or 8 characters significant in
  754. identifiers.
  755. .IP \fItabgen\fP
  756. a utility for generating character tables for C-programs.
  757. .IP \fIint\fP
  758. an EM interpreter. This one is written in C, and is very useful for checking
  759. out programs.
  760. .IP \fIgrind\fP
  761. a source level debugger for C, ANSI-C, Modula-2 and Pascal.
  762. .IP "\fIafcc\fP, \fIafm2\fP, \fIafpc\fP"
  763. .br
  764. these are ACK-compatible fast C, Modula-2 and Pascal compilers,
  765. available for M68020, VAX and Intel 80386 systems. They compile very fast,
  766. but produce slow code.
  767. .IP \fIfcc\fP
  768. this is a cc-compatible fast C compiler, available on SUN-3 and VAX
  769. systems. It compiles very fast, but produces slow code.
  770. .LP
  771. We currently make the Kit available to our users by telling
  772. them that they should include the $TARGET_HOME/bin directory in
  773. their PATH shell variable.
  774. The programs will still work when moved to a different
  775. directory or linked to.
  776. Copying should preferably be done with tar, since links are
  777. heavily used.
  778. Renaming of the programs linked to \fIack\fP will not always
  779. produce the desired result.
  780. This program uses its call name as an argument.
  781. Any call name not being \fIcc\fP, \fIacc\fP, \fIabc\fP, \fIpc\fP, \fIf2c\fP,
  782. \fIocm\fP, \fIm2\fP, or \fIapc\fP will be
  783. interpreted as the name of a 'machine description' and the
  784. program will try to find a description file with that name.
  785. The installation process will only touch the utilities in the $TARGET_HOME/bin
  786. directory, not copies of these utilities.
  787. .NH
  788. Machines
  789. .PP
  790. Below is a table with entries for all commands in
  791. the bin directory used to (cross)compile for a particular machine.
  792. The name in the first column gives the name in the bin directory.
  793. The column headed dir indicates which subdirectories of
  794. $TARGET_HOME/lib and/or $TARGET_HOME/lib.bin are needed for compilation.
  795. The column head i/p contains the integer and pointer size used in units of
  796. bytes.
  797. The subdirectories with the same name in mach contain the sources.
  798. A * in the column headed 'fp' indicates that floating point can be used
  799. for that particular machine. A + in that column indicates that floating
  800. point is available under the '-fp' option. In this case, software
  801. floating point emulation is used.
  802. .TS
  803. l l l l l l l.
  804. command system i/p languages fp dir remarks
  805. pdp PDP/UNIX V7 2/2 C * pdp
  806. Pascal
  807. Basic
  808. occam
  809. Modula-2
  810. vax4 VAX/BSD 4.? 4/4 C * vax4
  811. System V.2 Pascal
  812. Basic
  813. occam
  814. Modula-2
  815. Fortran
  816. sparc Sun-4 4/4 C * sparc
  817. Pascal
  818. Basic
  819. occam
  820. Modula-2
  821. Fortran
  822. sparc_solaris Sun-4 4/4 C * sparc_solaris
  823. Pascal
  824. Basic
  825. occam
  826. Modula-2
  827. Fortran
  828. m68k2 M68000/ 2/4 C + m68k2
  829. Unisoft Pascal
  830. Basic
  831. occam
  832. Modula-2
  833. m68k4 M68000/ 4/4 C + m68k4
  834. Unisoft Pascal m68k2
  835. Basic
  836. occam
  837. Modula-2
  838. Fortran
  839. pmds M68000/ 2/4 C + pmds Philips Micro
  840. PMDS Pascal m68k2 Devel. System
  841. Basic
  842. occam
  843. Modula-2
  844. pmds4 M68000/ 4/4 C + pmds4 Philips Micro
  845. PMDS Pascal m68k2 Devel. System
  846. Basic m68k4
  847. occam
  848. Modula-2
  849. Fortran
  850. mantra M68000/ 4/4 C + mantra
  851. Sys V.0 Pascal m68k2
  852. Basic m68k4
  853. occam
  854. Modula-2
  855. Fortran
  856. m68020 M68020/ 4/4 C + m68020
  857. Sys V/68 R2V2.1 Pascal
  858. Basic
  859. occam
  860. Modula-2
  861. Fortran
  862. sun3 Sun-3 R4.1 4/4 C + sun3
  863. Pascal m68020
  864. Basic
  865. occam
  866. Modula-2
  867. Fortran
  868. sun2 Sun-2 R3.0 4/4 C + sun2
  869. Pascal m68k4
  870. Basic m68k2
  871. occam
  872. Modula-2
  873. Fortran
  874. i86 IBM PC/IX 2/2 C + i86 IBM PC with PC/IX
  875. Pascal Causes kernel crashes
  876. Basic
  877. occam
  878. Modula-2
  879. xenix3 Microsoft 2/2 C + xenix3 IBM AT with Xenix
  880. Xenix V3 Pascal i86
  881. Basic
  882. occam
  883. Modula-2
  884. i386 SCO Xenix 4/4 C + i386 Intel 80386
  885. System V Pascal Xenix System V
  886. Basic
  887. occam
  888. Modula-2
  889. Fortran
  890. minix Minix PC 2/2 C + minix IBM PC running Minix
  891. Pascal i86
  892. Basic
  893. occam
  894. Modula-2
  895. minixST ST Minix 2/4 C + minixST Atari ST running Minix
  896. Pascal m68k2
  897. Basic
  898. occam
  899. Modula-2
  900. z8000 Zilog 8000 2/2 C z8000 Central Data
  901. Pascal CPU board
  902. Basic Assembler/loader
  903. occam
  904. Modula-2
  905. em22 EM machine 2/2 C * em22 Needs interpreter
  906. Pascal
  907. Basic
  908. occam
  909. Modula-2
  910. em24 EM machine 2/4 C * em24 Needs interpreter
  911. Pascal
  912. Basic
  913. occam
  914. Modula-2
  915. em44 EM machine 4/4 C * em44 Needs interpreter
  916. Pascal
  917. Basic
  918. occam
  919. Modula-2
  920. Fortran
  921. 6500 6502/BBC 2/2 C 6500 Assembler/loader
  922. Pascal
  923. Basic
  924. occam
  925. Modula-2
  926. 6800 Bare 6800 6800 Assembler only
  927. 6805 Bare 6805 6805 Assembler only
  928. 6809 Bare 6809 6809 Assembler only
  929. ns Bare NS16032 4/4 C ns
  930. Pascal
  931. Basic
  932. occam
  933. Modula-2
  934. Fortran
  935. i80 Hermac/z80 2/2 C i80
  936. Pascal
  937. Basic
  938. occam
  939. Modula-2
  940. z80 Hermac/z80 2/2 C z80 \fIi80\fP is faster
  941. Pascal
  942. Basic
  943. occam
  944. Modula-2
  945. s2650 Signetics s2650 Assembler only
  946. arm Acorn 4/4 C * arm Assembler/loader
  947. Archimedes Pascal
  948. Basic
  949. occam
  950. Modula-2
  951. Fortran
  952. .TE
  953. .LP
  954. The commands \fBem22\fP, \fBem24\fP and \fBem44\fP
  955. produce e.out files with EM machine code which must be interpreted.
  956. The Kit contains three interpreters: one running under PDP 11/V7 UNIX,
  957. one for the M68000, running under the PMDS system, Sun systems,
  958. the Mantra system, etc, and a portable one, written in C.
  959. The first one can only interpret 2/2 e.out files,
  960. the second takes 2/4 and 4/4 files,
  961. and the last one takes 2/2, 2/4 and 4/4.
  962. The PDP 11 interpreter executes floating point instructions.
  963. .LP
  964. The program \fB$TARGET_HOME/bin/em\fP calls the appropriate
  965. interpreter.
  966. The interpreters are looked for in the em22, em24 and em44
  967. subdirectories of $TARGET_HOME/lib.bin.
  968. The third interpreter is available as the program \fB$TARGET_HOME/bin/int\fP
  969. in the bin directory.
  970. .NH
  971. Compilation on a different machine.
  972. .PP
  973. The Kit be installed and used as a cross-compiler
  974. for the languages it supports on
  975. .UX
  976. machine.
  977. The presence of most
  978. .UX
  979. utilities is essential for compilation.
  980. A few of the programs certainly needed are: C-compiler, sed,
  981. make, and awk.
  982. .NH 2
  983. Backend
  984. .PP
  985. The existence of a backend with a system call library
  986. for the target system is essential
  987. for producing executable files for that system.
  988. Rewriting the system call library if the one supplied does
  989. not work on the target system is fairly straightforward.
  990. If no backend exists for the target CPU type, a new backend has to be written
  991. which is a major undertaking.
  992. .NH 2
  993. Universal assembler/loader, link editor
  994. .PP
  995. For most machines, the description files in $TARGET_HOME/lib/*/descr use our
  996. universal assembler and our link editor.
  997. The load file produced is not directly
  998. usable in any system known to us,
  999. but has to be converted before it can be put to use.
  1000. The \fIcv\fP programs convert our a.out format into
  1001. executable files.
  1002. The \fIdl\fP programs present for some machines unravel
  1003. our a.out files and transmit commands to load memory
  1004. to a microprocessor over a serial line.
  1005. The file $TARGET_HOME/man/man5/ack.out.5 contains a description of the format of
  1006. the universal assembler load file.
  1007. It might be useful to those who wish or need to write their
  1008. own conversion programs.
  1009. Also, a module is included to read and write our a.out format.
  1010. See $TARGET_HOME/man/man3/object.3.
  1011. .NH
  1012. Options
  1013. .NH 2
  1014. Default machine
  1015. .PP
  1016. There is one important option in $TARGET_HOME/config/local.h.
  1017. The utility \fIack\fP uses a default machine name when called
  1018. as \fIacc\fP, \fIcc\fP, \fIabc\fP, \fIapc\fP, \fIpc\fP, \fIocm\fP,
  1019. \fIm2\fP, \fIf2c\fP, or \fIack\fP.
  1020. The machine name used for default is determined by the
  1021. definition of ACKM in $TARGET_HOME/config/local.h.
  1022. The Kit is distributed with "sun3" as the default machine,
  1023. but the shell script "first" in the directory "first" alters this
  1024. to suit the target system.
  1025. There is nothing against using the Kit as a cross-compiler
  1026. and by default produce code that can't run on the local system.
  1027. .NH 2
  1028. Pathnames
  1029. .PP
  1030. Absolute path names are concentrated in "$TARGET_HOME/config/em_path.h".
  1031. Only the utilities \fIack\fP, \fIflex\fP, and \fILLgen\fP use
  1032. absolute path names to access files in the Kit.
  1033. The tree is distributed with /usr/em as the working
  1034. directory.
  1035. The definition of EM_DIR in em_path.h should be altered to
  1036. specify the root
  1037. directory for the Compiler Kit binaries on the local system ($TARGET_HOME).
  1038. This is done automatically by the shell script "first" in the
  1039. directory "first".
  1040. Em_path.h also specifies which directory should be used for
  1041. temporary files.
  1042. Most programs from the Kit do indeed use that directory
  1043. although some remain stubborn and use /tmp or /usr/tmp.
  1044. .LP
  1045. The shape of the tree should not be altered lightly because
  1046. most Makefiles and the
  1047. utility \fIack\fP know the shape of the ACK tree.
  1048. The knowledge of the utility \fIack\fP about the shape of the tree is
  1049. concentrated in the files in the directory $TARGET_HOME/lib/*/descr and $TARGET_HOME/lib/descr/*.
  1050. .NH
  1051. Makefiles
  1052. .PP
  1053. Most directories contain a "proto.make", from which a Makefile is derived.
  1054. Apart from commands applying to that specific directory these
  1055. files all recognize a few special commands.
  1056. When called with one of these they will apply the command to
  1057. their own directory.
  1058. The special commands are:
  1059. .sp 1
  1060. .IP "install" 20
  1061. recompile and install all binaries and libraries.
  1062. .br
  1063. Some Makefiles allow errors to occur in the programs they call.
  1064. They ignore such errors and notify the user with the message
  1065. "~....... error code n: ignored".
  1066. Whenever such a message appears in the output it can be ignored.
  1067. .IP "cmp"
  1068. recompile all binaries and libraries and compare them to the
  1069. ones already installed.
  1070. .IP pr
  1071. print the sources and documentation on the standard output.
  1072. .IP opr
  1073. make pr | opr
  1074. .br
  1075. Opr should be an off-line printer daemon.
  1076. On some systems it exists under another name e.g. lpr.
  1077. The easiest way to call such a spooler is using a shell script
  1078. with the name opr that calls lpr.
  1079. This script should be placed in /usr/bin or $TARGET_HOME/bin or
  1080. one of the directories in the PATH environment variable.
  1081. .IP clean
  1082. remove all files not needed for day-to-day use,
  1083. that is binaries not in $TARGET_HOME/bin or $TARGET_HOME/lib.bin, object files etc.
  1084. .LP
  1085. Example:
  1086. .DS
  1087. make install
  1088. .DE
  1089. given as command in a configuration directory will cause
  1090. compilation of all programs in the directory and copying of the results
  1091. to the $TARGET_HOME/bin and $TARGET_HOME/lib.bin directories.
  1092. .NH
  1093. Testing
  1094. .PP
  1095. Test sets are available in Pascal, C, Basic and EM assembly:
  1096. .IP EM 8
  1097. the directory $SRC_HOME/emtest contains a few EM test programs.
  1098. The EM assembly files in these tests must be transformed into
  1099. load files.
  1100. These tests use the LIN and NOP instructions to mark the passing of each
  1101. test.
  1102. The NOP instruction prints the current line number during the
  1103. test phase.
  1104. Each test notifies its correctness by calling LIN with a unique
  1105. number followed by a NOP which prints this line number.
  1106. The test finishes normally with 0 as the last number printed
  1107. In all other cases a bug showed its
  1108. existence.
  1109. .IP Pascal
  1110. the directory $SRC_HOME/lang/pc/test contains a few Pascal test programs.
  1111. All these programs print the number of errors found and a
  1112. identification of these errors.
  1113. .sp 1
  1114. .ti +4
  1115. We also tested Pascal with the Validation Suite.
  1116. The Validation Suite is a collection of more than 200 Pascal programs,
  1117. designed by Brian Wichmann and Arthur Sale to test Pascal compilers.
  1118. We are not allowed to distribute it, but a copy may
  1119. be requested from
  1120. .DS
  1121. Richard J. Cichelli
  1122. A.N.P.A.
  1123. 1350 Sullivan Trail
  1124. P.O. Box 598
  1125. Easton, Pennsylvania 18042
  1126. USA
  1127. .DE
  1128. .IP C
  1129. the sub-directories in $SRC_HOME/lang/cem/ctest contain C test programs.
  1130. The idea behind these tests is:
  1131. if there is a program called xx.c, compile it into xx.cem.
  1132. Run it with standard output to xx.cem.r, compare this file to
  1133. xx.cem.g, a file containing the 'ideal' output.
  1134. Any differences will point to implementation differences or
  1135. bugs.
  1136. Giving the command "run gen" or plain "run" starts this
  1137. process.
  1138. The differences will be presented on standard output.
  1139. The contents of the result files depend on the word size,
  1140. the xx.cem.g files on the distribution are intended for a
  1141. 32-bit machine.
  1142. .IP Basic
  1143. the directory $SRC_HOME/lang/basic/test contains some forty Basic programs.
  1144. Not all of these programs are correct, some have syntactic errors,
  1145. some simply don't work.
  1146. The Makefile in that directory attempts to compile and run
  1147. these tests.
  1148. If it compiles its output is compared to a file with suffix .g
  1149. which contains the output to be expected.
  1150. The make should be started with its standard input diverted
  1151. to /dev/null.
  1152. An example of the output of a make is present in the file Out.std.
  1153. .NH
  1154. Documentation
  1155. .PP
  1156. After installationm manual pages for Amsterdam Compiler Kit can be found
  1157. in the $TARGET_HOME/man directory. Also, the following documents are provided
  1158. in the $TARGET_HOME/doc directory:
  1159. .TS
  1160. l l.
  1161. toolkit.doc general overview (CACM article)
  1162. em.doc description of the EM machine architecture
  1163. ack.doc format of machine description files (lib/*/descr)
  1164. ansi_C.doc ANSI C implementation description
  1165. basic.doc Basic reference manual
  1166. pcref.doc Pascal-frontend reference manual
  1167. val.doc results of running the Pascal Validation Suite
  1168. crefman.doc C-frontend description
  1169. LLgen description of the LL(1) parser generator
  1170. peep.doc internal documentation for the peephole optimizer
  1171. cg.doc documentation for backend writers and maintainers
  1172. regadd.doc addendum to previous document describing register variables
  1173. ncg.doc documentation for the newest backends
  1174. v7bugs.doc bugs in the V7 system and how to fix them
  1175. 6500.doc MSC 6500 backend description
  1176. i80.doc Intel 8080 backend description
  1177. z80.doc Zilog Z80 backend description
  1178. m68020.doc Motorola M68000/M68020 backend description
  1179. sparc.doc SPARC code expander description
  1180. occam.doc occam-frontend description
  1181. ego.doc Global Optimizer description
  1182. top.doc Target Optimizer description
  1183. int.doc description of the EM interpreter written in C
  1184. ceg.doc documentation for code-expander writers and maintainers
  1185. lint.doc documentation of LINT
  1186. m2ref.doc Modula-2 frontend description
  1187. install.doc this document
  1188. install.pr this document (formatted for a simple line printer)
  1189. .TE
  1190. .LP
  1191. Use the Makefile to get readable copies.
  1192. .LP
  1193. Good luck.