.CH "Code Generator Usage" The code generator currently resides in the file =bin=/vcg. The three input streams can be read from the three standard inputs, or from three files (if a standard naming convention is used). The PMA output stream is produced on standard output 1, and should be redirected to a file for assembly. .sp Assume temporary files will be used for communications between the front end and the code generator. The temporary files must have names of the form "xxx.ct1" (for IMF stream 1), "xxx.ct2" (for IMF stream 2), and "xxx.ct3" (for IMF stream 3), where "xxx" is completely arbitrary but must be the same for all of the three temporary files in a given run. When the code generator is invoked, the string "xxx" must be passed to it as a command line argument. .sp To use the code generator, first run the front end to produce the temporary files: .sp .nf .in +5 front_end .sp .in -5 .fi Say, for example, this produces files "temp.ct1", "temp.ct2", and "temp.ct3". Next, run the code generator and produce the assembly language output: .sp .nf .in +5 vcg temp >temp.s .sp .in -5 .fi Run the assembler to convert the PMA source to relocatable binary code: .sp .nf .in +5 pmac temp.s .sp .in -5 .fi Finally, run the link editor to load the VCG main program, the binary code for your program, and all required library routines: .sp .nf .in +5 ld =lib=/vcg_main temp.b =lib=/vcglib -o program .sp .in -5 .fi This produces an object program (in the file "program") which may be executed simply by typing its name: .sp .nf .in +5 program .sp .in -5 .fi .pp All run-time support routines called by the output of the code generator are available in the library =lib=/vcglib. The stub main program in =lib=/vcg_main calls a procedure named MAIN; therefore, the user's main program must be named MAIN. (This is the usual case in C environments.) .pp One miscellaneous note: if the front end is being written in Ratfor, the complete set of macro definitions for the intermediate form operators can be obtained by simply including the file "=incl=/vcg_defs.r.i". If the front end is being written in Pascal, the complete set of constant definitions for the intermediate form operators can be obtained by including the file "=incl=/vcg_defs.p.i". .EV .fo //- # -//