IOP16 Assembler
Revision as of 14:09, 10 April 2022 by Blwikiadmin (talk | contribs) (Created page with "== Design a CPU - Assembler == * The CPU has an Assembler * The Assembler is written in Python 3 ** [https://github.com/douggilliland/Design_A_CPU/tree/main/Assembler Python...")
Contents
Design a CPU - Assembler
- The CPU has an Assembler
- The Assembler is written in Python 3
- There's also a Windows executable if you don't have Python 3 installed on your computer
Assembler - Windows executable
- Windows executable is in this folder
- Useful for people who don't have Python 3 installed
- Compiled to executable using
pyinstaller --onefile pyAssemble_cpu_001.py
Input fileName.csv
- Input file is tightly constrained in CSV file
- Input File Header has to be
['LABEL', 'OPCODE', 'REG_LABEL', 'OFFSET_ADDR', 'COMMENT']
Memory Map File
- Optional File named: fileName_MMAP.csv
- Memory map file Header has to be
# ['IO_ADDR','DIR','MNEUMONIC']
- IO_ADDR = 0XNN
- DIR = R, W, or RW
- Ex: ['0X00','R','LED_RD']
Output files
- .mif file - Quartus II ROM Memory Initialization File
- .lst file - Listing file (with addresses)
Assembler Psuedo-opcodes
- NOP - No operation
- HLT - Halt (Jump to self)
- BEQ - Branch if equal (same as BEZ)
- BNE - Branch if not equal (Aame as BNZ)
Error Messages
- Error messages are pretty rudimentary.
- Dialog box notes that error messages are printed to the command window.
- The line with the error is printed as a list of the line.
- Missing labels are presented as a message.
- Only one error at a time is presented.
Assembler opcodes
Documentation
- YouTube Video Series.
- Documentation slides are here (LibreOffice Impress Open document format).