1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# About this Manual
This manual describes the architecture and programming environment of a Vertex
Mark I microprocessor. This manual applies to application programmers, operating
system programmers and BIOS designers.
## Notational Conventions
This manual uses specific notation for data-structure formats, for symbolic
representation and for hexadecimal and binary numbers. A review of this notation
makes the manual easier to read.
### Bit and Byte Order
In illustrations of data structures in memory, smaller addresses appear toward
the bottom of the figure; addresses increase toward the top. Bit positions are
numbered from right to left. The numerical value of a set bit is two raised to
the power of the bit position. Vertex processors are "little endian" machines;
this means the bytes of a word are numbered starting from the least significant
byte. Figure 1.1 illustrates these conventions.
### Reserved Bits
In many register and memory layout descriptions, certain bits are marked as
**reserved**. When bits are marked as reserved, it is essential for
compatibility with future processors that software treat these bits as having
a future, but unknown, use. These bits should be treated as, not only undefined,
but unpredictable.
### Instruction Operands
When instructions are represented symbolically, a subset of the Vertex-32
assembly language is used. In this subset, an instruction has the following
format:
```
label: mnemonic argument1, argument2, argument3
```
where:
* A **label** is an identifier which is followed by a colon
* A **mnemonic** is a reserved name for an instruction opcode
* The operands *argument1*, *argument2* and *argument3* are optional. There may
be from zero to three operands, depending on the opcode.
When three operands are present in an arithmetic or logical operation, the first
operand is the destination register and the remaining two are either source
registers or immediate values. For example:
```
load: ADDI AX, BX, subtotal
```
In this example, `ADDI` is the mnemonic identifier of an opcode, `AX` is the
destination operand, and `BX` and `subtotal` are the source operands.
### Hexadecimal and Binary Numbers
Base 16 (hexadecimal) numbers are represented by a '0x' followed by a string of
hexadecimal digits. A hexadecimal digit is a character from '0' to '9' and 'A'
to 'F'. Base 2 (binary) numbers are represented by a string of 1s and 0s,
sometimes preceded by '0b' (for example, 0b1010). The '0b' designation is only
used in situations in which confusion about a number's base may arise.
### Exceptions
An exception is an event that typically occurs when an instruction causes an
error. For example, an attempt to divide by zero generates a divide-by-zero
exception. All exceptions provide either an error code or 0, indicating no
error. An error code reports additional information about the error. For
example, a page fault would provide a fault code indicating what caused the page
fault.
|