Abstract
A computer, put simply, is a machine which executes some set of instructions upon some set of data. The most basic computer architectures generally involve program instructions stored in read-only memory (ROM) that are sequentially piped to a central processing unit (CPU) to command it to read, operate on, and store working data in random-access memory (RAM). This conceptual architecture has existed since around 1945, and while significant improvements have been made since, it remains the conceptual foundation of virtually all modern computer architectures. Computer instructions exist in hardware as binary opcodes, which are decoded at the CPU to determine which operations are performed. Since each opcode invokes a specific function within the CPU, it is very useful to express opcodes as human-readable commands; this is better known as an assembly language. Every program written in any language, including Python, JavaScript, C, and C++, must either be expressed directly in opcodes (compilation) or executed using an interpreter which is itself expressed in opcodes (interpretation). Assembly languages and opcodes are unique to the computer architectures they're designed to operate on. Some well-known architectures used today include ARM, RISC-V, JVM, and WASM. Each of these architectures operates in very different ways and revolves around unique conceptual frameworks. When compiling from a low-level language like C, a compiler often has to work around the hardware limitations that each architecture demands, sometimes having to expand simple C instructions into complicated assembly sequences. This limitation inspired the objective for this project, which was to design a novel computer architecture where the hardware is specifically built to natively support the capabilities of C. The benefit of this architecture is that it would require minimal compilation complexity to produce assembly code from C, making translating C to assembly relatively simple to do by hand. Additionally, programmers could easily compose code directly in assembly, due to the architecture's close relationship with C.