86 lines
2.1 KiB
Plaintext
86 lines
2.1 KiB
Plaintext
|
.sp 1.5i
|
||
|
.ft B
|
||
|
Appendix B: Changes to the run time library
|
||
|
.ft R
|
||
|
.nh
|
||
|
.sp
|
||
|
Some minor changes in the run time library have been made concerning the
|
||
|
external files (i.e. program arguments). The old compiler reserved
|
||
|
space for the file structures of the external files in one \fBhol\fR block.
|
||
|
In the new compiler, every file structure is placed in a separate \fBbss\fR
|
||
|
block. This implies that the arguments with which \fI_ini\fR is called are
|
||
|
slightly different. The second argument was the base of the \fBhol\fR block
|
||
|
to relocate the buffer addresses, it is changed into an integer denoting the
|
||
|
size of the array passed as third argument. The third argument was a pointer
|
||
|
to an array of integers containing the description of external files, this
|
||
|
argument is changed into a pointer to an array of pointers to file structures.
|
||
|
|
||
|
The differences in the generated EM code for an arbitrary Pascal program are
|
||
|
listed below (only the relevant parts are shown):
|
||
|
.in +5m
|
||
|
.nf
|
||
|
\fBprogram\fR external_files(output,f);
|
||
|
\fBvar\fR
|
||
|
f : \fBfile of \fIsome-type\fR;
|
||
|
.
|
||
|
.
|
||
|
\fBend\fR.
|
||
|
.in -5m
|
||
|
|
||
|
EM code generated by Pascal-VU:
|
||
|
.in +5m
|
||
|
.
|
||
|
.
|
||
|
hol 1088,-2147483648,0 ; space belonging to file structures of the program arguments
|
||
|
.
|
||
|
.
|
||
|
.
|
||
|
\&.2
|
||
|
con 3, -1, 544, 0 \h'80u'; description of external files
|
||
|
lxl 0
|
||
|
lae .2
|
||
|
lae 0 \h'146u'; base of hol block, to relocate buffer addresses
|
||
|
lxa 0
|
||
|
cal $_ini
|
||
|
asp 16
|
||
|
.
|
||
|
.
|
||
|
.in -5m
|
||
|
|
||
|
EM code generated by our compiler:
|
||
|
.in +5m
|
||
|
.
|
||
|
.
|
||
|
f
|
||
|
bss 540,0,0 \h'100u'; space belonging to file structure of program argument f
|
||
|
output
|
||
|
bss 540,0,0 \h'100u'; space belonging to file structure of standard output
|
||
|
.
|
||
|
.
|
||
|
.
|
||
|
\&.2
|
||
|
con 0U4, output, f \h'50u'; the absence of standard input is denoted by a null pointer
|
||
|
lxl 0
|
||
|
lae .2
|
||
|
loc 3 \h'144u'; denotes the size of the array of pointers to file structures
|
||
|
lxa 0
|
||
|
cal $_ini
|
||
|
asp 16
|
||
|
.
|
||
|
.
|
||
|
.in -5m
|
||
|
|
||
|
.po
|
||
|
The following files in the run time library have been changed:
|
||
|
.in +1m
|
||
|
pc_file.h
|
||
|
hlt.c
|
||
|
ini.c
|
||
|
opn.c
|
||
|
pentry.c
|
||
|
pexit.c
|
||
|
.in -1m
|
||
|
.fi
|
||
|
.bp
|
||
|
.po
|