Avoid informal usage of 'you', updated installation manual
This commit is contained in:
parent
78ca80f4d5
commit
8f0ef636ab
|
@ -1,6 +1,6 @@
|
||||||
Some of these documents use a font called CW.
|
Some of these documents use a font called CW.
|
||||||
If you don't have that, you can change references to it with a sed-script
|
If this font is not available, reference to it can be changed with
|
||||||
like
|
a sed-script like
|
||||||
s/\.ft CW/.ft yourfont/
|
s/\.ft CW/.ft yourfont/
|
||||||
s/\\f(CW/\\fyourfont/g
|
s/\\f(CW/\\fyourfont/g
|
||||||
s/^.fp\(.*\)CW$/.fp\1yourfont/
|
s/^.fp\(.*\)CW$/.fp\1yourfont/
|
||||||
|
|
|
@ -88,14 +88,14 @@ All punctuation must be included where shown.
|
||||||
GENERAL INFORMATION
|
GENERAL INFORMATION
|
||||||
.LP
|
.LP
|
||||||
The BASIC-EM compiler is designed for a UNIX based environment.
|
The BASIC-EM compiler is designed for a UNIX based environment.
|
||||||
It accepts a text file with your BASIC program (suffix .b) and generates
|
It accepts a text file with a BASIC program (suffix .b) and generates
|
||||||
an executable file, called a.out.
|
an executable file, called a.out.
|
||||||
.NH 2
|
.NH 2
|
||||||
LINE FORMAT
|
LINE FORMAT
|
||||||
.LP
|
.LP
|
||||||
A BASIC program consists of a series of lines, starting with a
|
A BASIC program consists of a series of lines, starting with a
|
||||||
positive line number in the range 0 to 32767.
|
positive line number in the range 0 to 32767.
|
||||||
A line may consists of more then one physical line on your terminal, but must
|
A line may consists of more than one physical line on a terminal, but
|
||||||
is limited to 1024 characters.
|
is limited to 1024 characters.
|
||||||
Multiple BASIC statements may be placed on a single line, provided
|
Multiple BASIC statements may be placed on a single line, provided
|
||||||
they are separated by a colon (:).
|
they are separated by a colon (:).
|
||||||
|
@ -393,7 +393,7 @@ ERROR
|
||||||
ERROR <integer expression>
|
ERROR <integer expression>
|
||||||
.PU
|
.PU
|
||||||
To simulate the occurrence of a BASIC error.
|
To simulate the occurrence of a BASIC error.
|
||||||
To define your own error code use a value not already in
|
To define a private error code a value must be used that is not already in
|
||||||
use by the BASIC runtime system.
|
use by the BASIC runtime system.
|
||||||
The list of error messages currently in use can be found in appendix B.
|
The list of error messages currently in use can be found in appendix B.
|
||||||
.NH 2
|
.NH 2
|
||||||
|
|
17
doc/cg.doc
17
doc/cg.doc
|
@ -374,12 +374,12 @@ It is undefined when the instruction has no operand.
|
||||||
.br
|
.br
|
||||||
Although an exhaustive list could be given describing all the types
|
Although an exhaustive list could be given describing all the types
|
||||||
the following rule of thumb will suffice.
|
the following rule of thumb will suffice.
|
||||||
If you cannot imagine the operand of the instruction ever to be
|
If it is unimaginable for the operand of the instruction ever to be
|
||||||
something different from a plain integer, the type is integer,
|
something different from a plain integer, the type is integer,
|
||||||
otherwise it is string.
|
otherwise it is string.
|
||||||
.br
|
.br
|
||||||
.I Cg
|
.I Cg
|
||||||
makes all necessary conversions for you,
|
makes all necessary conversions,
|
||||||
like adding EM_BSIZE to positive arguments of instructions
|
like adding EM_BSIZE to positive arguments of instructions
|
||||||
dealing with locals,
|
dealing with locals,
|
||||||
prepending underlines to global names,
|
prepending underlines to global names,
|
||||||
|
@ -776,8 +776,8 @@ Items are pushed in the order of appearance.
|
||||||
This means that the last item will be on the top of the
|
This means that the last item will be on the top of the
|
||||||
stack after the push.
|
stack after the push.
|
||||||
So if the stack pattern contained two token expressions
|
So if the stack pattern contained two token expressions
|
||||||
and you want to push them back unchanged,
|
and they must be pushed back unchanged,
|
||||||
you have to specify as stack replacement
|
they have to be specified as stack replacement
|
||||||
.DS
|
.DS
|
||||||
%[2] %[1]
|
%[2] %[1]
|
||||||
.DE
|
.DE
|
||||||
|
@ -878,7 +878,7 @@ and shows how to place erase() and setcc() calls.
|
||||||
"sxt %[a.even]" | { PAIRSIGNED, %[a.1], %[a.2] }| |
|
"sxt %[a.even]" | { PAIRSIGNED, %[a.1], %[a.2] }| |
|
||||||
.DE
|
.DE
|
||||||
This coercion shows how to use the move and test calls.
|
This coercion shows how to use the move and test calls.
|
||||||
At first you might think that the testcall is unnecessary,
|
At first one might think that the testcall is unnecessary,
|
||||||
since the move will have set the condition codes,
|
since the move will have set the condition codes,
|
||||||
but the move may never have been executed
|
but the move may never have been executed
|
||||||
if the register already contained the value,
|
if the register already contained the value,
|
||||||
|
@ -1155,8 +1155,8 @@ from the string of size w_size and generate code to assemble global
|
||||||
data for that integer.
|
data for that integer.
|
||||||
Only the sizes for which arithmetic is implemented need be
|
Only the sizes for which arithmetic is implemented need be
|
||||||
handled,
|
handled,
|
||||||
so if you didn't implement 200-byte integer division
|
so if 200-byte integer division is not implemented,
|
||||||
you don't have to implement 200-byte integer global data.
|
200-byte integer global data do not have to be implemented.
|
||||||
Here one must take care of word order in long integers.
|
Here one must take care of word order in long integers.
|
||||||
.IP con_float()
|
.IP con_float()
|
||||||
This function must generate code to assemble a floating
|
This function must generate code to assemble a floating
|
||||||
|
@ -1170,7 +1170,8 @@ and room made for local variables for a total of f_nlocals bytes.
|
||||||
This function is called when a
|
This function is called when a
|
||||||
.B mes
|
.B mes
|
||||||
pseudo is seen that is not handled by the machine independent part.
|
pseudo is seen that is not handled by the machine independent part.
|
||||||
Example below shows all you probably have to know about that.
|
The example below probably shows all the table writer ever has to know
|
||||||
|
about that.
|
||||||
.IP segname[]
|
.IP segname[]
|
||||||
This is not a function,
|
This is not a function,
|
||||||
but an array of four strings.
|
but an array of four strings.
|
||||||
|
|
|
@ -558,7 +558,7 @@ Maybe some conversions will have to be made.
|
||||||
.IP 4)
|
.IP 4)
|
||||||
In 'head_em': an application program returns control to the monitor by
|
In 'head_em': an application program returns control to the monitor by
|
||||||
jumping to address 0xFB52.
|
jumping to address 0xFB52.
|
||||||
If this is not the right way on your system, change it.
|
This may have to be changed for different systems.
|
||||||
.IP 5)
|
.IP 5)
|
||||||
In 'tail_em': the current version of the 8080 back-end has very limited I/O
|
In 'tail_em': the current version of the 8080 back-end has very limited I/O
|
||||||
capabilities, because it was tested on a system that
|
capabilities, because it was tested on a system that
|
||||||
|
|
685
doc/install.doc
685
doc/install.doc
File diff suppressed because it is too large
Load diff
|
@ -465,7 +465,7 @@ This error occurs when a function procedure does not return properly
|
||||||
("falls" through).
|
("falls" through).
|
||||||
.IP "illegal instruction"
|
.IP "illegal instruction"
|
||||||
.br
|
.br
|
||||||
This error might occur when you use floating point operations on an
|
This error might occur when floating point operations are used on an
|
||||||
implementation that does not have floating point.
|
implementation that does not have floating point.
|
||||||
.PP
|
.PP
|
||||||
In addition,
|
In addition,
|
||||||
|
|
41
doc/ncg.doc
41
doc/ncg.doc
|
@ -229,8 +229,8 @@ Register variables
|
||||||
.PP
|
.PP
|
||||||
If the machine has more than enough registers to generate code with,
|
If the machine has more than enough registers to generate code with,
|
||||||
it is possible to reserve some of them for use as register variables.
|
it is possible to reserve some of them for use as register variables.
|
||||||
If it has not, you can skip this section and ignore any references
|
If it has not, this section may be skipped and any references
|
||||||
to register variables in the rest of this document.
|
to register variables in the rest of this document may be ignored.
|
||||||
.PP
|
.PP
|
||||||
The front ends generate messages to the back ends telling them which
|
The front ends generate messages to the back ends telling them which
|
||||||
local variables could go into registers.
|
local variables could go into registers.
|
||||||
|
@ -253,8 +253,8 @@ A loop control variable.
|
||||||
A pointer variable.
|
A pointer variable.
|
||||||
Usually they are better candidates to put in registers.
|
Usually they are better candidates to put in registers.
|
||||||
.PP
|
.PP
|
||||||
If you use register variables in your table you must supply
|
If register variables are used,
|
||||||
more functions in mach.c.
|
more functions must be supplied in mach.c.
|
||||||
These functions are explained later.
|
These functions are explained later.
|
||||||
.NH 1
|
.NH 1
|
||||||
Description of the machine table
|
Description of the machine table
|
||||||
|
@ -803,11 +803,10 @@ The type of the operand is dependent on the instruction,
|
||||||
sometimes it is integer,
|
sometimes it is integer,
|
||||||
sometimes it is address.
|
sometimes it is address.
|
||||||
It is undefined when the instruction has no operand.
|
It is undefined when the instruction has no operand.
|
||||||
Watch out for instructions with type-letter w.
|
Instructions with type-letter w can occur without an operand.
|
||||||
They can occur without an operand.
|
This can be checked in the code rule with the defined() pseudo function.
|
||||||
Check for this in your code rule with the defined() pseudo function.
|
|
||||||
.br
|
.br
|
||||||
If you cannot imagine the operand of the instruction ever to be
|
If it is unimaginable for the operand of the instruction ever to be
|
||||||
something different from a plain integer, the type is integer,
|
something different from a plain integer, the type is integer,
|
||||||
otherwise it is address.
|
otherwise it is address.
|
||||||
.br
|
.br
|
||||||
|
@ -816,7 +815,7 @@ are the instructions marked with the
|
||||||
type-letters c,f,l,n,o,s,r,w,z in the EM manual.
|
type-letters c,f,l,n,o,s,r,w,z in the EM manual.
|
||||||
.br
|
.br
|
||||||
.I Cg
|
.I Cg
|
||||||
makes all necessary conversions for you,
|
makes all necessary conversions,
|
||||||
like adding EM_BSIZE to positive arguments of instructions
|
like adding EM_BSIZE to positive arguments of instructions
|
||||||
dealing with locals,
|
dealing with locals,
|
||||||
prepending underlines to global names,
|
prepending underlines to global names,
|
||||||
|
@ -851,7 +850,7 @@ This is the second allocated register.
|
||||||
The second subregister of the first allocated register.
|
The second subregister of the first allocated register.
|
||||||
.PP
|
.PP
|
||||||
All normal C operators apply to integers,
|
All normal C operators apply to integers,
|
||||||
the + operator on addresses behaves as you would expect
|
the + operator on addresses behaves as one would expect
|
||||||
and the only operators allowed on register expressions
|
and the only operators allowed on register expressions
|
||||||
are == and != .
|
are == and != .
|
||||||
Furthermore there are some special `functions':
|
Furthermore there are some special `functions':
|
||||||
|
@ -1343,8 +1342,7 @@ generate the same string as is used for this label.
|
||||||
The code generator system could probably easily be changed
|
The code generator system could probably easily be changed
|
||||||
to make this work for assemblers that do not support this
|
to make this work for assemblers that do not support this
|
||||||
type of label by generating unique labels itself.
|
type of label by generating unique labels itself.
|
||||||
Implementation of this is not contemplated at the moment,
|
Implementation of this is not contemplated at the moment.
|
||||||
bad luck if your assembler cannot do it.
|
|
||||||
.NH 3
|
.NH 3
|
||||||
Stack replacement
|
Stack replacement
|
||||||
.PP
|
.PP
|
||||||
|
@ -1360,8 +1358,8 @@ Items are pushed in the order of appearance.
|
||||||
This means that the last item will be on the top of the
|
This means that the last item will be on the top of the
|
||||||
stack after the push.
|
stack after the push.
|
||||||
So if the stack pattern contained two sets
|
So if the stack pattern contained two sets
|
||||||
and you want to push them back unchanged,
|
and they must be pushed back unchanged,
|
||||||
you have to specify as stack replacement
|
they have to be specified as stack replacement
|
||||||
.DS
|
.DS
|
||||||
yields %2 %1
|
yields %2 %1
|
||||||
.DE
|
.DE
|
||||||
|
@ -1549,10 +1547,9 @@ with REG REG
|
||||||
gen com %1
|
gen com %1
|
||||||
bic %1,%2 yields %2
|
bic %1,%2 yields %2
|
||||||
.DE
|
.DE
|
||||||
Shows the way you have to twist the table,
|
Shows the way to handle the absence
|
||||||
if an
|
of an
|
||||||
.I and -instruction
|
.I and -instruction.
|
||||||
is not available on your machine.
|
|
||||||
.DS
|
.DS
|
||||||
.ta 7.5c
|
.ta 7.5c
|
||||||
pat set $1==2
|
pat set $1==2
|
||||||
|
@ -1656,7 +1653,7 @@ This rule for
|
||||||
.B blm
|
.B blm
|
||||||
already uses three registers of the same type.
|
already uses three registers of the same type.
|
||||||
.I Cgg
|
.I Cgg
|
||||||
contains code to check all your rules
|
contains code to check all rules
|
||||||
to see if they can be applied from an empty fakestack.
|
to see if they can be applied from an empty fakestack.
|
||||||
It uses the marriage thesis from Hall,
|
It uses the marriage thesis from Hall,
|
||||||
a thesis from combinatorial mathematics,
|
a thesis from combinatorial mathematics,
|
||||||
|
@ -2202,8 +2199,8 @@ from the string of size w_size and generate code to assemble global
|
||||||
data for that integer.
|
data for that integer.
|
||||||
Only the sizes for which arithmetic is implemented need be
|
Only the sizes for which arithmetic is implemented need be
|
||||||
handled,
|
handled,
|
||||||
so if you didn't implement 200-byte integer division
|
so if 200-byte integer division is not implemented,
|
||||||
you don't have to implement 200-byte integer global data.
|
200-byte integer global data don't have to be implemented.
|
||||||
Here one must take care of word order in long integers.
|
Here one must take care of word order in long integers.
|
||||||
.IP -
|
.IP -
|
||||||
con_float()
|
con_float()
|
||||||
|
@ -2223,7 +2220,7 @@ mes(w_mesno)
|
||||||
This function is called when a
|
This function is called when a
|
||||||
.B mes
|
.B mes
|
||||||
pseudo is seen that is not handled by the machine independent part.
|
pseudo is seen that is not handled by the machine independent part.
|
||||||
The example below shows all you probably have to know about that.
|
The example below shows all one probably have to know about that.
|
||||||
.IP -
|
.IP -
|
||||||
segname[]
|
segname[]
|
||||||
.br
|
.br
|
||||||
|
|
|
@ -634,7 +634,7 @@ eof(f) is true just before the call to get(f).
|
||||||
read error, trap 103, fatal:
|
read error, trap 103, fatal:
|
||||||
.br
|
.br
|
||||||
unlikely to happen. Probably caused by hardware problems
|
unlikely to happen. Probably caused by hardware problems
|
||||||
or by errors elsewhere in your program that destroyed
|
or by errors elsewhere in the program that destroyed
|
||||||
the file information maintained by the run time system.
|
the file information maintained by the run time system.
|
||||||
.ti -5
|
.ti -5
|
||||||
truncated, trap 99, fatal:
|
truncated, trap 99, fatal:
|
||||||
|
@ -846,7 +846,7 @@ changed instead of many Pascal programs.
|
||||||
.PP
|
.PP
|
||||||
Another advantage is that these library modules may be written in a different
|
Another advantage is that these library modules may be written in a different
|
||||||
language, for instance C or the EM assembly language.
|
language, for instance C or the EM assembly language.
|
||||||
This is useful if you want to use some specific EM instructions not generated
|
This is useful for accessing some specific EM instructions not generated
|
||||||
by the Pascal compiler. Examples are the system call routines and some
|
by the Pascal compiler. Examples are the system call routines and some
|
||||||
floating point conversion routines.
|
floating point conversion routines.
|
||||||
Another motive could be the optimization of some time-critical program parts.
|
Another motive could be the optimization of some time-critical program parts.
|
||||||
|
@ -914,8 +914,8 @@ by parameters, even the files input and output.
|
||||||
Access to a variable declared in a module is only possible
|
Access to a variable declared in a module is only possible
|
||||||
using the procedures and functions declared in that same module.
|
using the procedures and functions declared in that same module.
|
||||||
By giving the correct procedure/function heading followed by the
|
By giving the correct procedure/function heading followed by the
|
||||||
directive 'extern' you may use procedures and functions declared in
|
directive 'extern' procedures and functions declared in
|
||||||
other units.
|
other units may be used.
|
||||||
.sp
|
.sp
|
||||||
.ti -3
|
.ti -3
|
||||||
3.~\
|
3.~\
|
||||||
|
@ -955,7 +955,7 @@ Three additional standard procedures are available:
|
||||||
.IS
|
.IS
|
||||||
.ti -8
|
.ti -8
|
||||||
halt:~~~a call of this procedure is equivalent to jumping to the
|
halt:~~~a call of this procedure is equivalent to jumping to the
|
||||||
end of your program. It is always the last statement executed.
|
end of the program. It is always the last statement executed.
|
||||||
The exit status of the program may be supplied
|
The exit status of the program may be supplied
|
||||||
as optional argument. If not, it will be zero.
|
as optional argument. If not, it will be zero.
|
||||||
.ti -8
|
.ti -8
|
||||||
|
@ -978,10 +978,10 @@ UNIX interfacing.
|
||||||
.sp
|
.sp
|
||||||
If the c-option is turned on, then some special features are available
|
If the c-option is turned on, then some special features are available
|
||||||
to simplify an interface with the UNIX environment.
|
to simplify an interface with the UNIX environment.
|
||||||
First of all, the compiler allows you to use a different type
|
First of all, the compiler allows for a different type
|
||||||
of string constants.
|
of string constants.
|
||||||
These string constants are delimited by double quotes ('"').
|
These string constants are delimited by double quotes ('"').
|
||||||
To put a double quote into these strings, you must repeat the double quote,
|
To put a double quote into these strings, the double quote must be repeated,
|
||||||
like the single quote in normal string constants.
|
like the single quote in normal string constants.
|
||||||
These special string constants are terminated by a zero byte (chr(0)).
|
These special string constants are terminated by a zero byte (chr(0)).
|
||||||
The type of these constants is a pointer to a packed array of characters,
|
The type of these constants is a pointer to a packed array of characters,
|
||||||
|
@ -990,7 +990,7 @@ with lower bound 1 and unknown upper bound.
|
||||||
Secondly, the compiler predefines a new type identifier 'string' denoting
|
Secondly, the compiler predefines a new type identifier 'string' denoting
|
||||||
this just described string type.
|
this just described string type.
|
||||||
.PP
|
.PP
|
||||||
The only thing you can do with these features is declaration of
|
These features are only useful for declaration of
|
||||||
constants and variables of type 'string'.
|
constants and variables of type 'string'.
|
||||||
String objects may not be allocated on the heap and string pointers
|
String objects may not be allocated on the heap and string pointers
|
||||||
may not be de-referenced.
|
may not be de-referenced.
|
||||||
|
@ -1062,7 +1062,7 @@ Ack-Pascal deviates from the standard proposal in the following ways:
|
||||||
.ti -3
|
.ti -3
|
||||||
1.~\
|
1.~\
|
||||||
Standard procedures and functions are not allowed as parameters in Ack-Pascal.
|
Standard procedures and functions are not allowed as parameters in Ack-Pascal.
|
||||||
You can obtain the same result with negligible loss of performance
|
The same result can be obtained with negligible loss of performance
|
||||||
by declaring some user routines like:
|
by declaring some user routines like:
|
||||||
.EQ
|
.EQ
|
||||||
function sine(x:real):real;
|
function sine(x:real):real;
|
||||||
|
@ -1091,14 +1091,14 @@ at run time. Default +.
|
||||||
.sp
|
.sp
|
||||||
.ti -8
|
.ti -8
|
||||||
c~+/-~~~\
|
c~+/-~~~\
|
||||||
this option, if on, allows you to use C-type string constants
|
this option, if on, allows the use of C-type string constants
|
||||||
surrounded by double quotes.
|
surrounded by double quotes.
|
||||||
Moreover, a new type identifier 'string' is predefined.
|
Moreover, a new type identifier 'string' is predefined.
|
||||||
Default -.
|
Default -.
|
||||||
.sp
|
.sp
|
||||||
.ti -8
|
.ti -8
|
||||||
d~+/-~~~\
|
d~+/-~~~\
|
||||||
this option, if on, allows you to use variables of type 'long'.
|
this option, if on, allows the use of variables of type 'long'.
|
||||||
Default -.
|
Default -.
|
||||||
.sp
|
.sp
|
||||||
.ti -8
|
.ti -8
|
||||||
|
@ -1112,7 +1112,7 @@ The default value is wordsize-1.
|
||||||
l~+/-~~~\
|
l~+/-~~~\
|
||||||
if + then code is inserted to keep track of the source line number.
|
if + then code is inserted to keep track of the source line number.
|
||||||
When this flag is switched on and off, an incorrect line number may appear
|
When this flag is switched on and off, an incorrect line number may appear
|
||||||
if the error occurs in a part of your program for which this flag is off.
|
if the error occurs in a part of the program for which this flag is off.
|
||||||
These same line numbers are used for the profile, flow and count options
|
These same line numbers are used for the profile, flow and count options
|
||||||
of the EM interpreter em [5].
|
of the EM interpreter em [5].
|
||||||
Default +.
|
Default +.
|
||||||
|
@ -1125,7 +1125,7 @@ Default +.
|
||||||
.sp
|
.sp
|
||||||
.ti -8
|
.ti -8
|
||||||
s~+/-~~~\
|
s~+/-~~~\
|
||||||
if + then the compiler will hunt for places in your program
|
if + then the compiler will hunt for places in the program
|
||||||
where non-standard features are used, and for each place found
|
where non-standard features are used, and for each place found
|
||||||
it will generate a warning. Default -.
|
it will generate a warning. Default -.
|
||||||
.sp
|
.sp
|
||||||
|
@ -1168,8 +1168,8 @@ Of course, if debug is a variable nothing can be removed.
|
||||||
A disadvantage of Pascal, the lack of preinitialized data, can be
|
A disadvantage of Pascal, the lack of preinitialized data, can be
|
||||||
diminished by making use of the possibilities of the EM optimizer.
|
diminished by making use of the possibilities of the EM optimizer.
|
||||||
For instance, initializing an array of reserved words is sometimes
|
For instance, initializing an array of reserved words is sometimes
|
||||||
optimized into 3 EM instructions. To maximize this effect you must initialize
|
optimized into 3 EM instructions. To maximize this effect
|
||||||
variables as much as possible in order of declaration and array entries
|
variables must be initialized as much as possible in order of declaration and array entries
|
||||||
in order of decreasing index.
|
in order of decreasing index.
|
||||||
.CH "References"
|
.CH "References"
|
||||||
.in +5
|
.in +5
|
||||||
|
|
10
doc/peep.doc
10
doc/peep.doc
|
@ -187,9 +187,9 @@ Not recommended unless the own package does not work on some bizarre
|
||||||
machine.
|
machine.
|
||||||
.IP -
|
.IP -
|
||||||
COREDEBUG, prints large amounts of information about core management.
|
COREDEBUG, prints large amounts of information about core management.
|
||||||
Better not define it unless you change the code and it stops working.
|
Not recommended unless the code is changed and it stops working.
|
||||||
.IP -
|
.IP -
|
||||||
SEPID, if you define this you will get an extra procedure that will
|
SEPID, defining this will add an extra procedure that will
|
||||||
go through a lot of work to scrape the last bytes together if the
|
go through a lot of work to scrape the last bytes together if the
|
||||||
system won't provide more.
|
system won't provide more.
|
||||||
This is not a good idea if memory is scarce and code and data reside
|
This is not a good idea if memory is scarce and code and data reside
|
||||||
|
@ -440,9 +440,9 @@ These are first replaced everywhere in the table by the correct
|
||||||
replacement after which the first three instructions of the
|
replacement after which the first three instructions of the
|
||||||
pattern are hashed and the pattern is linked into one of the
|
pattern are hashed and the pattern is linked into one of the
|
||||||
256 linked lists.
|
256 linked lists.
|
||||||
There is a define CHK_HASH in this module that you
|
There is a define CHK_HASH in this module that
|
||||||
can set if you do not trust the randomness of the hashing
|
can be set if the randomness of the hashing
|
||||||
function.
|
function is not trusted.
|
||||||
.PP
|
.PP
|
||||||
The attention now shifts to optimize().
|
The attention now shifts to optimize().
|
||||||
This routine calls basicblock() for every piece of code between two labels.
|
This routine calls basicblock() for every piece of code between two labels.
|
||||||
|
|
|
@ -7,17 +7,17 @@ Introduction
|
||||||
This is a short description of the newest feature in the
|
This is a short description of the newest feature in the
|
||||||
table driven code generator for the Amsterdam Compiler Kit.
|
table driven code generator for the Amsterdam Compiler Kit.
|
||||||
It describes how to add register variables to an existing table.
|
It describes how to add register variables to an existing table.
|
||||||
This assumes you have the distribution of October 1983 or later.
|
This assumes a distribution of October 1983 or later.
|
||||||
It is not clear whether you should read this when starting with
|
It is not clear whether one should read this when starting with
|
||||||
a table for a new machine,
|
a table for a new machine,
|
||||||
or whether you should wait till the table is well debugged already.
|
or waiting till the table is well debugged already.
|
||||||
.NH 1
|
.NH 1
|
||||||
Modifications to the table itself.
|
Modifications to the table itself.
|
||||||
.NH 2
|
.NH 2
|
||||||
Register section
|
Register section
|
||||||
.PP
|
.PP
|
||||||
You can add just before the properties of the register one
|
Just before the properties of the register one
|
||||||
of the following:
|
of the following can be added:
|
||||||
.IP - 2
|
.IP - 2
|
||||||
regvar
|
regvar
|
||||||
.IP -
|
.IP -
|
||||||
|
@ -127,7 +127,5 @@ Afterthoughts.
|
||||||
At the time of this writing the tables for the PDP 11 and the M68000 and
|
At the time of this writing the tables for the PDP 11 and the M68000 and
|
||||||
the VAX are converted, in all cases the two byte wordsize versions.
|
the VAX are converted, in all cases the two byte wordsize versions.
|
||||||
No big problems have occurred, but experience has shown that it is
|
No big problems have occurred, but experience has shown that it is
|
||||||
necessary to check your table carefully for all patterns with locals in them
|
necessary to check the table carefully for all patterns with locals in them.
|
||||||
because if you forget one code will be generated by that one coderule
|
Code may be generated that uses the memoryslot the local is not in.
|
||||||
to use the memoryslot the local is not in.
|
|
||||||
|
|
||||||
|
|
|
@ -148,7 +148,7 @@ start: ldfps $7400
|
||||||
beq 1b
|
beq 1b
|
||||||
4
|
4
|
||||||
.PE
|
.PE
|
||||||
You have to dig into the kernel to fix it.
|
Some digging into the kernel is required to fix it.
|
||||||
The following patch will do:
|
The following patch will do:
|
||||||
.PS
|
.PS
|
||||||
/* original /usr/sys/sys/slp.c */
|
/* original /usr/sys/sys/slp.c */
|
||||||
|
@ -265,14 +265,14 @@ The same file slp.c should be patched as follows:
|
||||||
.sp
|
.sp
|
||||||
Some system calls are changed from version 6 to version 7.
|
Some system calls are changed from version 6 to version 7.
|
||||||
A library of system call entries, that make a version 6 UNIX look like
|
A library of system call entries, that make a version 6 UNIX look like
|
||||||
a version 7 system, is provided to enable you to run some
|
a version 7 system, is provided to run some
|
||||||
useful version 7 utilities, like 'tar', on UNIX-6.
|
useful version 7 utilities, like 'tar', on UNIX-6.
|
||||||
The entry for 'stat' contained two bugs:
|
The entry for 'stat' contained two bugs:
|
||||||
the 24-bit file size was incorrectly converted to 32 bits
|
the 24-bit file size was incorrectly converted to 32 bits
|
||||||
(sign extension of bit 15)
|
(sign extension of bit 15)
|
||||||
and the uid/gid fields suffered from sign extension.
|
and the uid/gid fields suffered from sign extension.
|
||||||
.sp
|
.sp
|
||||||
Transferring your files from version 6 to version 7 using 'tar'
|
Transferring files from version 6 to version 7 using 'tar'
|
||||||
will fail for all files for which
|
will fail for all files for which
|
||||||
.sp
|
.sp
|
||||||
( (size & 0100000) != 0 )
|
( (size & 0100000) != 0 )
|
||||||
|
|
|
@ -214,7 +214,7 @@ initialized.
|
||||||
.TT 6.8.2.4-5
|
.TT 6.8.2.4-5
|
||||||
.TT 6.8.2.4-6
|
.TT 6.8.2.4-6
|
||||||
The ACK-Pascal compiler does not restrict the places from where
|
The ACK-Pascal compiler does not restrict the places from where
|
||||||
you may jump to a label by means of a goto-statement.
|
a jump to a label by means of a goto-statement is allowed.
|
||||||
.sp
|
.sp
|
||||||
.TT 6.8.3.9-5
|
.TT 6.8.3.9-5
|
||||||
.TT 6.8.3.9-6
|
.TT 6.8.3.9-6
|
||||||
|
|
|
@ -11,8 +11,8 @@ This table was written to make it run, not to make it clever!
|
||||||
The effect is, that the table written for the intel 8080,
|
The effect is, that the table written for the intel 8080,
|
||||||
which was made very clever runs faster and requiers less space!!
|
which was made very clever runs faster and requiers less space!!
|
||||||
So, for anyone to run programs on a z80 machine:
|
So, for anyone to run programs on a z80 machine:
|
||||||
You could try to make the table as clever as the one for the i80,
|
n attempt could be made to make this table as clever as the one for the i80,
|
||||||
or you could run the i80 table, for that can run on every z80 too.
|
or the i80 table could be used, for that can run on every z80 too.
|
||||||
.NH
|
.NH
|
||||||
IMPLEMENTATION
|
IMPLEMENTATION
|
||||||
.PP
|
.PP
|
||||||
|
@ -51,7 +51,7 @@ in the EM-library.
|
||||||
.IP 4)
|
.IP 4)
|
||||||
In \fIhead_em\fP: an application program returns control to the monitor by
|
In \fIhead_em\fP: an application program returns control to the monitor by
|
||||||
jumping to address 0x20.
|
jumping to address 0x20.
|
||||||
If this is not the right way on your system, change it.
|
Thie may have to be changed on different systems.
|
||||||
For an CPM-machine for example this should be 0x5, to provide a warm boot.
|
For an CPM-machine for example this should be 0x5, to provide a warm boot.
|
||||||
.IP 5)
|
.IP 5)
|
||||||
In \fItail_em\fP: the current version of the z80 back-end has very limited I/O
|
In \fItail_em\fP: the current version of the z80 back-end has very limited I/O
|
||||||
|
|
Loading…
Reference in a new issue