Control Data Corporation 3100/3200/3300/3500 Computers ALGOL Manual
PDF
Документ
Реклама
Реклама
CONTROL DATA
CORPORATION
3100/3200/3300/3500 ALGOL
ABNORMAL OBJECT TIME
TERMINATION DUMP
3100/3200/3300/3500 ALGOL
ABNORMAL OBJECT TIME
TERMINATION DUMP
CONTENTS
CHAPTER 1 INTRODUCTION 1
CHAPTER 2 OBJECT TIME ABNORMAL TERMINATION DUMP 3
Structured Dump 3
Global and Environmental Information 4
CHAPTER 3 GLOBAL INFORMATION 5
UA 5
UV 5
LASTUSED 5
CHAPTER 4 ENVIRONMENTAL INFORMATION 7
Formal Variables 7
Local Variables 7
Values of Variables 8
Descriptions of Variables 8
CHAPTER 5 DESCRIPTIONS 11
Terminology 11
02 Switch 11
03 String 12
04 Label or Designational Expression 12
05 No-type Procedure 12
06 Typed Procedure 12
07 Array 12
10 Constant 14
11 Expression 14
12 Simple Variable 14
13 Subscripted Variable 14
CHAPTER 6 SAMPLE PROGRAM AND DUMP 15
Program 15
Dump 16
INTRODUCTION
This bulletin describes Object Time Abnormal Termination Dump in
Control Data®3100/3200/3300/3500 computer series ALGOL. It is
assumed that the reader is acquainted with the general characteristics
of 3100/3200/3300/3500 series computers and programming in the
ALGOL language. The language is as defined in the Communications of
the ACM, 1963, vol. 6, No. 1, pp 1-17 with some additional procedures
and exceptions as stated in the Control Data Reference Manual
OBJECT TIME ABNORMAL TERMINATION DUMP
STRUCTURED DUMP
Upon abnormal termination of an object program, a diagnostic (such as,
ARITHMETIC OVERFLOW or FORMAT STRING ERROR) is printed on the
standard output unit to indicate the nature of the error. The contents of all
non-empty output format areas are output on their respective units. In
particular, if there is a non-empty format area associated with LU 61
(standard output), its contents appear on that unit following the object time
diagnostic. This information is followed by a structured dump.
The structured dump traces the execution path through the blocks in the
block structure currently active when the error occurs. The information
relevant to the ALGOL program at the time the error occurred (values,
descriptions, and/or locations of variables), is selected from core storage
for printing in this dump. The dump has the following format:
THIS ERROR OCCURRED AFTER LINE xxxx
IN THE BLOCK ENTERED AT LINE xxxx
(global information)
(environmental information)
THIS BLOCK WAS CALLED FROM LINE xxxx
IN THE BLOCK ENTEREDAT LINE xxxx
(environmental information)
THIS BLOCK WAS CALLED FROM LINE xxxx
IN THE BLOCK ENTERED AT LINE xxxx
(environmental information)
GLOBAL AND
ENVIRONMENTAL
INFORMATION
The line number xxxx refers to the number assigned to each source image
line during compilation and printed with the source program listing. If the
block entered is a standard procedure, the word STAN appears instead of
the line number.
Each line of global and environmental information consists of a 15-bit
address field printed as 5 octal digits. This is immediately followed by
48 bits representing the contents of one stack entry, printed as 16 octal
digits in fields of 2, 6, 2, and 6, as follows:
Address Field Information Field
XXXXX XX XXXXXX XX XXXXXX
UA
UV
LASTUSED
GLOBAL INFORMATION 3
The global information applies to the ruming program as a whole, without
regard to the currently active block structure. It has the following format:
THE GLOBAL VARIABLES ARE . .
UA, VALUE XXXXX XX ~~ XXXXXX XX XXXXXX
UV XXXXX XX XXXXXX XX 2XXXXX
LASTUSED XXXXX XX XXXXXX XX XXXXXX
UA, UV, and LASTUSED are the names of variables internal to the ALGOL
system.
UA contains the address of the last accessed formal parameter, the address
of the value of a typed procedure, or the address of the last referenced array
element. The address field gives the contents of UA. The other 48 bits are
the contents of the location referenced by this address.
UV is used only to contain either the value of the last accessed formal
parameter if this does not appear in the stack (such as, a formal expression)
or the value of a typed procedure. Whenever UV is in use, UA contains the
address of UV. The address field gives the address of UV. The other 48 bits
are its contents.
LASTUSED contains the address of the top stack element. The address field
gives the address of the top stack element. The other 48 bits are the contents
of the location referenced by this address.
ENVIRONMENTAL INFORMATION 4
The environmental information consists of descriptions or values of those
formal and/or local variables belonging to the appropriate block level.
Formal variables appear only if the particular block is a procedure. Simple
local variables and simple formal parameters called by value are
represented by their values; all other variables are represented by a
description. The formats of these values and descriptions are given later.
FORMAL VARIABLES Formal variables are dumped in the following structure:
LOCAL VARIABLES
1st line Return information
2nd line 1st formal parameter
3rd line 2nd formal parameter
зе че +
last formal parameter
1st constant used as actual parameter
2nd constant used as actual parameter
а Фев
In addition to every declared variable, one stack entry exists for each
artificial label generated for a for statement and one for each designational
expression of a switch list; moreover, each bound-pair list, in an array
declaration containing n bound pairs, generates n+l stack entries. All of
these entries appear in the stack in reverse order from their appearance in
the source program, and they are dumped in this form. Any additional stack
entries following the first declared (last printed) variables represent inter-
mediate working locations generated by the compiler.
VALUES OF
VARIABLES
DESRIPTIONS
OF VARIABLES
Simple local variables and simple formal parameters called by value are
represented in the stack as follows:
Boolean
A 48-bit entry in which bits 47-25 are always set to 0. Bit 24
is set to 1 for true and 0 for false. Bits 23-0 are irrelevant.
Integer
A 48-bit entry in a fixed-point, right-justified integer form.
Real
A 48-bit entry in standard floating-point form.
All descriptions of variables in the stack have the following general form:
< 1 > <i> < > <ad >
<x>, <t>, address 1 18 i 1 kk 5 address 2 18
x is three bits representing the transformation which must be applied to
formal arithmetic variables.
t is three bits representing the type of a variable.
i is 1 bit used by the system in conjunction with kk as described below.
kk is 5 bits representing the kind of the variable.
The interpretation of the addresses address 1 and address 2 depends on the
kind (kk) of description.
The transformation, x, is used only for the descriptions of formal
parameters and can take the following values:
Possible Use
No transformation Formal and local
0
1 Fix — Formal only
2 Float Formal only
3 Fix-then-float Formal only
4-7 Not used Not used
The type, t, can take the following values:
I OO x WN HO
The kind, kk, can take the following values:
00
01
02
03
04
05
06
07
10
11
12
13
14-37
The reader should be aware that a stack entry representing an arithmetic
value may have a bit structure which makes it appear to be a description.
No type
Boolean
Real
Integer
Real-integer
Integer-real
Real-integer-real
Not used
Not used
Not used
Switch
String
Label or designational
expression
No-type procedure
Typed procedure
Array
Constant
Expression
Simple variable
Subscripted variable
Not used
Possible Use
Formal and local
. Formal and local
Formal and local
Formal and local
Formal only
- Formal only
Formal only
Not used
Possible Use
Not used
Not used
Formal and local
Formal and local
Formal and local
Formal and local
- Formal and local
. Formal and local
Formal only
Formal only
Formal only
Formal only
Not used
DESCRIPTIONS 5
The following detailed explanations of the descriptions are ordered according
to the kind, kk, as described above, except for Return Information which does
not have a kind and is described first.
TERMINOLOGY All references to the stack in the object program are relative to the beginning
of the stack area for a particular block. When a block is entered at execution
time, the base address of the corresponding stack area is assigned. This
absolute base address is the Stack Reference of the block. In the following
descriptions, Stack Reference is used to define the environment of the
particular element. ВЕ
The term Segment Location means an address pointing to a position in the
object program. In non-segmented execution, it is the 18-bit complement of
an absolute address. In segmented execution, it is interpreted as a 9-bit
segment number followed by a 9-bit segment relative address.
The term Stack Address means an absolute address pointing to a particular
stack entry. |
RETURN
INFORMATION < No. of formals> < Stack Reference> 18 < No. of constants+1> 6
< Segment Location> .
02 SWITCH < 0>, <0>, < No. of switch elements >. 4 < 0>, <02>_ <1>, <Stack Address>,,
Stack Address points to the first element of the switch list.
In a switch declaration, the switch list (see kind 04, below) precedes the
switch description as follows: a ;
< Designational expression of the nth switch element > 48
< Designational expression of (n-1)th switch element > 48
11
STACK ADDRESS
03 STRING
04 LABEL OR
DESIGNATIONAL
EXPRESSION
05 NO-TYPE
PROCEDURE
06 TYPED
PROCEDURE
07 ARRAY
12
<Designational expression of 1st switch element >, 8
< Switch description as above >48
< Relative Address>,, < No. of string char. >19 <i >, <03 >
< Segment Location> 18
The above description is a copy of the description saved as an own variable
in the stack. The Relative Address is the address relative to the stack
reference of Block 0 of this own stack entry.
The string itself is stored in-line in the object program. The Segment
Location points to the first word of the string.
After syntax checking on the string has been performed the first time, the
i bit is set to 1 in the own stack entry, to prevent further syntax checking
on the same string.
<0 > <0>, < Stack Reference>_ <i >| < 04>, < Segment Location >18
If a designational expression is not a label, the Segment Location points to
the code which evaluates the expression and jumps to the resulting label.
For each for statement, the compiler generates an artificial label which has
the same description as above. This label is used to return from the end of
the for statement to the control at the beginning. Whenever the for statement
is not in execution, the Segment Location of this label is set to point to a
special system entry 000011, in order to detect abnormal use of the statement.
The i bit is set to 1 in this case.
In addition, the i bit is preset to 1 before entry to each step-until element,
and set to 0 after this element has been entered.
< 0 > <0>, <Stack Reference > <1>, <05 > < Segment Location >
3 18 18
> <t> < > <1>. <06> < ion >
<X 3 t 3 Stack Reference 18 1 1 06 5 Segment Location 18
<X > <t>, < Stack Address 1> 3 <0>, < OT > < 1>, < Stack Address 2 5
Stack Address 1 is the base address of the array elements in the stack.
The elements of an array are assigned above the last working location
of the particular block, but do not appear in the dump.
own arrays are handled in the same way, except that their elements are
assigned among the own variables in block 0.
The elements of an array called by value are copied {and transformed, if
necessary) to a position above the working locations of the block of the
procedure.
Stack Address 2 is the base address of the dope vector which is used to
calculate the addresses of the array elements (see below).
In an array declaration, the dope vector of the corresponding bound-pair
list precedes the descriptions for all array identifiers of an array segment.
The dope vector for the array declaration
array A| 4: u, fy + Uys one by | is:
<C, >94 <Not used > 94
<Ca-1 >,, <Not used > 24
<C, > „д “Not used > 94
< Length of array > 94 < Not used > 94
< Lower bound effect > 24 <n=No. of dimensions > 94
where C.=u. - £ +1
i i i
= * *
Length of array ©, Co Core. En
= * * * * +
Lower bound effect (C-- (A С + %) C + 4) ....) Ca e
2 3
The address of any element is referenced by the base address of the array plus
‚. (1 * + 1) * + i)*....)* + i - de .
((( (iy Co i) Ca ig) ) С. i lower bound effect
13
STACK ADDRESS
10 CONSTANT
11 EXPRESSION
12 SIMPLE VARIABLE
13 SUBSCRIPTED
VARIABLE
14
For example, the description of the declaration
array A, B 1: 3, 2: 5 | is:
>
<4 94 <Not used >, ,
< Not used >
<12 > 94 24
< 6 >, < 2 >
24 24
hs >
< Description of B 48
< Description of A > 48
<х >< t>, < Stack Address >18 <0 > <10>_ < Not used>, 9
The Stack Address locates the constant in the stack.
<X>, <t>, < Stack Reference >18 <1>, <11>, < Segment Location>, s
<0>, <12>_ < Not used>
<X>, <t>, <Stack Address >. 1 5
3 3 18
The Stack Address locates the stack entry for the variable.
<X >, <t>. <Stack References >
13 ;
3 3 18 < 1>, <13>, < Segment Locations
18
SAMPLE PROGRAM AND DUMP
PROGRAM
ALGOL - 32 (1.0) ~~ DUMP
0** DUMP EXAMPLE
#BEGIN#
#INTEGER# N ., |
FARRAYE Al, A2(/1. 3) ..
PROCEDURES BLOW(BA, IB, IC, ID, L, PA, AA, | Ав) .
#VALUE# ID, AB .,
#INTEGER# IB, IC, ID .,
'#BOOLEAN# BA .,
. ALABEL£.L .,
#INTEGER# #PROCEDURE# PA .,
10%% #ARRAY# AA, AB ., |
| #LLGIN#
+INTEGER I ., |
#SWITCH# SW ..= L, LA .,
I .= PA (I)+1/5., | |
#FOR# I ..= 1 #STEP# 1 #UNTIL# 2 #DO# 1 ..= I + 1/0 .
#FOR# I ..= 2 #DO# .,
LA . ;
#END# ,
INTEGER #PROCEDURE# K(I) ., #INTEGER# I ., K ..=1 .,
20%* = 4,7 ., | ВЕ
BLOW ( ТВОЕ N, 3,5+N, 2*N, 12, K, Al, A2 ) .,
12. |
| хо #EOP#
15
DUMP
CHANNEL , 60=LU60 , P80
CHANNEL, 61=LU61 , P136 , PP60
CHANNEL , END
ARITHMETIC OVERFLOW
16
THIS ERROR OCCURED AFTER
IN THE BLOCK ENTERED AT
THE GLOBAL VARIABLES ARE ..
UA , VALUE 03214
uv 03214
LASTUSED 06361
THE FORMAL VARIABLES ARE ..
06323
06321
06317
00315
06313
06311
06307
06305
06303
06301
THE LOCAL VARIABLES ARE ..
06335
06337
06341
06343
06345
06347
06351
06353
34
34
14
10
01
03
14
00
00
03
02
02
00
00
00
00
00
00
00
00
17
003335
003335
600000
006237
000301
006263
006237
000000
006237
006237
006273
006355
000001
006327
006327
006327
006327
006237
000002
000000
756314
THIS BLOCK WAS CALLED FROM
IN THE BLOCK ENTERED AT
THE LOCAL VARIABLES ARE ..
06245
06247
06251
06253
06255
06257
06261
06263
00
03
00
00
00
02
02
00
006237
006237
006237
000003
000001
006265
006273
000000
THIS BLOCK WAS CALLED FROM
LINE 0014
LINE 0003
01
01
04
02
10
12
51
00
46
07
07
00
04
44
04
04
04
02
00
63
406333
406333
600001
001775
000000
000000
001757
000012
001775
001667
106255
106255
000000
001664
000011
001617
001664
001775
106345
000001
146315
LINE 0021
LINE 0001
04
46
45
21
00
07
07
00
001775
001667
001502
003347
000001
106255
106255
000005
LINE 0001
Explanation
Return Information
BA, Constant true
IB, Simple Variable N
IC, Expression 3.5+N
ID, Value 2%N
L , Label L2
PA, Typed Procedure K
AA, Array Al
AB, Value Array, A2
Value of constant true
Label
for label not entered
for label entered
Designational Expression LA
Designational Expression L
, Switch
, Value of integer
Working Location
"2
L2, Label
K Typed Procedure
BLOW No type Procedure
Dope Vector
Dope Vector
A2, Array
Al, Array
N , Value of integer
CONTROL DATA CORPORATION
Documentation Department
3145 Porter Drive
Palo Alto, California
MAY 1966 PUB. NO. 60171000
">
/
Изтегляне
Само приятелско напомняне. Можете да видите документа точно тук. Но най-важното е, че нашият AI вече го е прочел. Той може да обясни сложни неща на прост език, да отговори на вашите въпроси на всеки език и да ви помогне бързо да навигирате дори в най-дългите или най-сложните документи.
Реклама