Book contents
- Frontmatter
- Contents
- Preface
- 1 Controlling complexity
- 2 A Verilogical place to start
- 3 Defining the instruction set architecture
- 4 Algorithmic behavioral modeling
- 5 Building an assembler for VeSPA
- 6 Pipelining
- 7 Implementation of the pipelined processor
- 8 Verification
- A The VeSPA instruction set architecture (ISA)
- B The VASM assembler
- Index
- VeSPA Instruction Set
B - The VASM assembler
Published online by Cambridge University Press: 31 October 2009
- Frontmatter
- Contents
- Preface
- 1 Controlling complexity
- 2 A Verilogical place to start
- 3 Defining the instruction set architecture
- 4 Algorithmic behavioral modeling
- 5 Building an assembler for VeSPA
- 6 Pipelining
- 7 Implementation of the pipelined processor
- 8 Verification
- A The VeSPA instruction set architecture (ISA)
- B The VASM assembler
- Index
- VeSPA Instruction Set
Summary
The assembler developed for the VeSPA processor is called VASM, for VeSPA ASeMbler. This assembler takes a text file as input and produces as output an object file consisting of a sequence of hexadecimal values. The contents of this file can be read into the simulated VeSPA memory by the Verilog simulator using the readmemh() operation.
The error-checking in the VASM assembler is not very robust making it all too easy to confuse the assembler. Furthermore, the error messages it produces are very brief and can sometimes be misleading. Nevertheless, it is still easier to use this assembler to produce the object file rather than trying to assemble your programs by hand. This appendix provides a brief summary of the assembler notation. Additionally, Section B.4 shows how to modify the assembler with a detailed example of adding a new instruction.
Notational conventions
The following notation is interpreted by the assembler to have special meaning.
;, //. Both the semicolon (;) and two adjacent forward slash characters (//) indicate that the following text is a comment. Any characters on a line that follow either of these symbols are ignored by the assembler. These two types of comment characters have identical meanings and can be used interchangeably.
#. The pound sign is used to denote an immediate operand. For example, #58 tells the assembler to use the value 58 as an immediate operand.
0x. This character sequence indicates that the following number should be interpreted as a hexadecimal value. Thus, 0x10 is interpreted as the value 16, while 10 would be interpreted as the value ten.
[…]
- Type
- Chapter
- Information
- Designing Digital Computer Systems with Verilog , pp. 147 - 152Publisher: Cambridge University PressPrint publication year: 2004