GithubHelp home page GithubHelp logo

cpu's Introduction

x86-64 CPU Architecture Simulation

Example

Getting Started

Prerequisites

Make sure you have installed all of the following prerequisites on your machine:

  • flex>=2.6.4
  • bison>=3.3.2
  • cmake>=3.8
  • a C++17 compiler gcc, g++, ...

Build

# make sure to build in a seperate folder
mkdir build
cd build
cmake ..
make

For Debian based operating systems you can just use this:

sudo apt-get install flex bison cmake g++ git && git clone https://github.com/AnisBdz/CPU && cd CPU && mkdir build && cd build && cmake .. && make

Usage

Intel's x86-64 Architecture Simulation
Usage:
    ./app [OPTION...] filename

    -f, --filename arg  Input filename
    -i, --interactive   Enable interactive execution
    -s, --speed arg     Execution speed (instruction per minute) (default: 100)
    -h, --help          Print usage

Examples

examples/add_loop.asm

; example program that calculates the sum of two integer vectors
; it showcases data declaration, function calls and some instructions

section .data
	x dd 1, 2, 3, 4
	y dd 5, 6, 7, 8
	z dd 0, 0, 0, 0


section .text
	; the execution starts here
	call main


	; you should always end your program with the halt instruction
	; or else you program will result in a segmentation falt
	hlt

main:
	; enter
	push ebp
	mov ebp, esp

	mov ecx, 0

	mov esi, x
	mov edi, y
	mov edx, z

	loop:
		mov eax, [esi + ecx * 4]
		add eax, [edi + ecx * 4]
		mov [edx + ecx * 4], eax

		add ecx, 1
		cmp ecx, 4
		jne loop

	; leave
	mov esp, ebp
	pop ebp

	ret

Check the examples folder for more... examples, ya know!

Unit Tests

This project uses Catch2. The tests are available in the tests folder. After building the project, a unit_tests executable will be created.

$ ./unit_tests
===============================================================================
All tests passed (18 assertions in 3 test cases)

Thanks

Special thanks to @ArthurSonzogni for his amazing UI library FTXUI

cpu's People

Contributors

arthursonzogni avatar chximn avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.