Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Python Verilog C Assembly
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
YourFirstASM This project was constructed using Flex and Bison. These utilities are used to make various compilers such as gnu-c, gnu-asm, etc., based on an input grammer similar to BNF language grammers. The files of most interest in this project are the files scanner.l (the lexer file) and parser.y (the parser grammer). These files are the input to Flex and Bison, respectively. Here are a short description of each source file: scanner.l This file contains a definition for Flex. Flex compiles this file into a regular c file (scanner.c) that reads input from a file and outputs tokens to the parser. In simple terms, it breaks the input file into the various identifiers, keywords, numbers, strings, and punctuation. parser.y This file contains a BNF-like grammer definition. Bison compiles this file into a regular c file (parser.c) that takes tokens from the scanner and with the grammer syntax parses the input file. The grammer definition is embedded with actions that generate the assembler output for the given input file. ** For more information on input scanners and parsers see *** Flex and Bison, or Lex and Yacc. yfasm.h The yfasm.h contain any definitions that are shared between the lexer and the parser source files. yfsys.h Contains information about the CPU design such as bit widths of the instruction word and mnemonic op-codes. scanner.c These files are generated by Flex and Bison and the & parser.c input files scanner.l and parser.y. Thus these files are not included in the distribution and are also deleted by "make clean". main.c The main program. Very simple in design it calls the parser on each input file. It then takes the assembler output (raw instruction memory) and formats it to stdout. This is the initial construction of an assembler for the Your First CPU soft processor tutorial. To simplify the code many features were not included such as a fancy command line parser with switches. Currently, the yfasm program assembles all source files on the command line and outputs a single hex integer per line for each instruction. This output file format is suitable for ModelSim and many others that load memory contents via the $readmemh() verilog directive. To compile the assembler, use: $ make To compile the test asm file with the assember, use: $ ./yfasm test.asm > test.rom The Makefile also contains some other commands, such as: make clean Cleans intermediate object files. make test Compiles the assembler and runs it against a test asm input file (test.asm). (note!) Do not redirect this to a rom file, or the assembler build info will be redirected as well! make depend refreshes the dependancies between the source files. Use this if you adjust the include files or add source files to this project. make rebuild perform a "make clean" and "make".