BLISS.HLP--Help file for BLISS-36 Version 4A Sep-84 [5 pages] 1.0 INTRODUCTION BLISS-36 is a BLISS language compiler that runs under TOPS-20 and generates code for KA, KI, KS, and KL processors. The BLISS system consists of the BLISS-36 compiler and a collection of BLISS oriented utilities and documentation. The BLISS language is designed for the implementation of system software. It combines the simplicity, transportability and clarity of high-level languages, with the precision and flexibility of assembly languages. Special care has been taken so that the BLISS language is transportable. Compilers are currently available for DECsystem-10/DECSYSTEM-20 (BLISS-36), VAX (BLISS-32) and PDP-11 (BLISS-16). Each compiler includes machine specific extensions that may be used as required. The BLISS-36 compiler optimizes greatly and, generally, resultant programs are comparable in size and speed to those coded in assembly language. This summary, as well as other BLISS documents, assumes that the BLISS compiler and its object time libraries are installed on SYS:; help files are installed on HLP:; other documentation is installed on DOC: and all other files are installed on BLI:. The file DOC:BLISS.DOC, distributed with this release contains: o Detailed description of the differences between version 4A (this version) and version 4 of BLISS-36 o A list of known bugs in this release o "Pointers" to other sources of information about BLISS-36 and its associated utilities o A list of the major components of the BLISS-36 system 2.0 COMMAND LINE BLISS uses the COMND JSYS to parse the command line, and so resembles other TOPS-20 commands in format. To invoke the compiler, run BLISS.EXE. Assuming that the compiler is on SYS: you may simply type @BLISS You will receive the prompt: BLISS> Each command line must include at least one file specification which is interpreted as the file to be compiled. The simplest command line is: BLISS>FILENAME which will cause FILENAME.B36 or FILENAME.BLI to be compiled, and FILENAME.REL to be created. Since the COMND JSYS is used you may freely use command completion and the "?" feature. You may also type the BLISS command line directly to the EXEC like this: @BLISS FILENAME In this case, however, because of restrictions in TOPS-20 "?" will result in the message: Data line to be sent to program 3.0 SWITCHES A listing of the available switches is given below. Defaults are marked with an asterisk(*). The options for the /FORMAT switch are described below. SWITCH DESCRIPTION /CH(ECK):options Controls whether the compiler gives warnings about certain conditions in the source code. The options are: FIELD -- Give a warning if a structure is accessed with a field name that was not declared in a FIELD attribute in its declaration; INITIAL -- Give a warning if there is a reference to a local variable whose value is known to be undefined at the point of reference; OPTIMIZE -- give a warning if code is deleted because a control expression can be evaluated at compile time. REDECLARE -- give a warning if a symbol is declared within a block with the same name as a symbol which was known outside the block. All of these options may be prefixed with "NO" to suppress them. The default is /CHECK: (FIELD, INITIAL, OPTIMIZE, NOREDECLARE). /CO(DE)* Generate object code. /CR(OSS-REFERENCE) Specifies whether or not to generate a cross-reference listing (only relevant when /LIST is also specified). /D(EBUG) Generate symbols for debugging, emit debug linkages, and disable certain optimizations which might mislead the debugger. /ERROR-LIMIT:n* Number of compilation errors permitted before compilation will be automatically terminated. Default value for "n" is 30 errors. /ERRS* Report errors to the terminal. /EXI(T) Do not prompt after compilation. /EXT(ENDED):option Program to run in a non-zero section on a Model B processor. The option is: SECTION-INDEPENDENT -- Produces code that will run from any section. /F(ORMAT):options Specify certain options to control the format of the listing file (see below). /H(EADER)* Produce a heading on the top of each page of the listing file including configuration information. /KA(10) Assume generated code is to be executed on a KA-10. /KI(10) Assume generated code is to be executed on a KI-10. /KS(10) Assume generated code is to be executed on a KS-10. (Synonymous with /KL10). /KL(10)* Assume generated code is to be executed on a KL-10 or KL-20. /LIB(RARY):fs Interpret the source file(s) as a library source file. The resultant object file is the precompiled library file that can be requested from a source program with a library-declaration. The default file-spec (fs) name is the same as the source file name and the default extension is ".L36". /LIS(TING):fs Produce a listing file. The default file-spec (fs) name is the same as the source file. The default extension is ".LST". /MA(STER-CROSS-REFERENCE):fs Produce a master cross reference file for use with the BCREF utility. The default file-spec (fs) name is the same as the source file. The default extension is ".CRF". /NOxxx Invert the meaning of switch /xxx. /OB(JECT):fs* Produce an object file and call it "fs". The default file-spec (fs) name is the same as the source file. The default extension is ".REL". /OPTI(MIZE)* Perform full flow analysis. /OPTL(EVEL):n Specify the degree of optimization. N must be in the range 0 to 3. Request 3 for maximum optimization. Default is 2. /P(AGSIZ):n Specify the number of lines printed on each page of the listing file. N must be greater than 20. Default is 52. /Q(UICK) Requests a "quick" compilation, possibly at the expense of some optimization. /SA(FE)* Specifies that the source program is coded in a "safe" manner, i.e. values of named variables are changed only by explicit assignment to the named variable. If /NOSAFE is specified, the compiler assumes that indirect assignments invalidate a larger class of variables. /ST(ATISTICS) Print routine names on the terminal as they are compiled. /TOPS1(0) Produce code to run under TOPS-10. /TOPS2(0)* Produce code to run under TOPS-20. /U(NAMES) Produce unique names for own variables and non-global routine names in the listing file when it is to be assembled. /V(ARIANT):n Assign n to be the value of the lexical function %VARIANT. If not present (default), zero is assumed. If present and no value is given, 1 is assumed. /Z(IP) Optimized for time over space if there is a choice to be made. The following are the options that can be given with the /FORMAT switch. The form of the /FORMAT switch is given by: /FORMAT:option or /FORMAT:(option,option, ...) A(SSEMBLY) Produce a listing file that can be assembled. (Some modification may be necessary.) B(INARY)* Include in the listing file the octal representation of the binary code generated. C(OMMENTARY)* Include in the listing file commentary on the operands of each instruction. Currently, this consists of a source line number. E(XPAND) Include the expansion of each macro invocation. See also the TRACE option. L(IBRARY) Include a trace identifying the library accessed by each library-declaration and the first use of each name whose definition is obtained from a library file. NOxxx Invert the meaning of option xxx. O(BJECT)* List the compiled code. The ASSEMBLY, SYMBOLIC, BINARY, and COMMENTARY options determine the format of the compiled code. R(EQUIRE) Do not modify the listing control counter (see the SOURCE option) when opening or closing files specified in a REQUIRE declaration. In the default case, this results in not listing each REQUIRE file. SO(URCE)* Increments the listing control counter. The initial value of the counter is 1. When the counter is greater than 0, source is listed. Require-declarations automatically decrement the counter for the length of the require file unless the REQUIRE option is used. SY(MBOLIC)* List the instructions generated, using as many program symbols as possible. T(RACE) Trace macro expansion. This includes the resulting stream of lexemes produced by EXPAND. 4.0 ENVIRONMENTS The BLISS compiler can generate code for a number of different environments. That is, it can generate code which takes advantage of special features of a variety of processors (KA10, KI10, KS10 and KL10) and for either TOPS-10 or TOPS-20. Furthermore, BLISS allows the user to specify a large variety of routine linkages. Any of these environmental changes may cause a need for another OTS (operating time system) or high-level debugger (SIX12). However, in almost all cases, BLISS will do the right thing automatically. For unusual specialized situations BLISS requires some help (See DOC:BLISS.DOC for more details). [end of BLISS.HLP]