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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ce9d1e0 · Jul 12, 2021
Apr 18, 2020
Aug 20, 2020
Aug 17, 2020
May 7, 2020
Aug 20, 2020
Jul 12, 2021
Jul 22, 2020
Jul 12, 2021
Aug 22, 2020
Aug 22, 2020
Aug 22, 2020
Aug 22, 2020
Jul 22, 2020
Jul 30, 2020
Aug 16, 2020
Aug 22, 2020
Aug 22, 2020
Aug 22, 2020
Aug 20, 2020
Aug 20, 2020
Aug 22, 2020
Aug 22, 2020
Aug 20, 2020
Aug 22, 2020

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