Skip to content

Double-pass assembler, written in ANSI C90 for an imaginary 24-bit computer.

License

Notifications You must be signed in to change notification settings

AvivNaaman/OpenU-C-Project

Repository files navigation

C Project: 24-bit Assembler

Build

About

This project is an assignment in a C programming course at the open unvieristy (20465). The purpose of this project is to build an assembler for 15-instruction asssembly language, for an imaginary 24-bit CPU and 21 bits of memory size. This project was done by @LetEpsilonInR and @YotamGranot. For any issues, questions and ideas turn to the Issues tab.

License: MIT License, Affect from September 1st, 2020

Source structure (Modules)

  1. assembler - main function definition, argv & argc processing, single file processing.
  2. first_pass - contains functions for processing a single line in the first pass and a code line in the first pass.
  3. second_pass - contains function for processing a single line in second pass and replacing symbol by it's address.
  4. code - contains useful function for processing code.
  5. instructions - contains useful function for processing instruction.
  6. globals.h - contains type and constant definitions.
  7. table - contains definition of table-like linked list data structure.
  8. utils - contains general-purposed, project-wide functions.
  9. writefiles - contains methods for writing output files: *.ob, *.ext and *.ent

Usage

./assembler file1 file2 file3 ... Will start the processing of each file (specify WITHOUT extension!). No support for double-quoting file names.

Build

You may build with several tools:

  1. Using CMake: run cmake --build . (you might have to run cmake --cofngiure . first) - Provides support for CLion IDE
  2. Using make command (Makefile)
  3. Manually (Not recommended): compile each *.c file to *.o and then compile all to a single executable using CC/GCC/CLang with -g a.o b.o .... -o exe