TDT4258/README.md

53 lines
1.9 KiB
Markdown

# TDT4258 - Lowlevel Programming
[Course link][tdt4258]
## Exercise 1
For this exercise, we were tasked with writing a palindrome finder in assembly.
The code should be able to run on a [DE1-SoC][de1soc] emulator, that can be found at [CPUlator][cpulator].
### ARM Assembly Resources
![ARM Assembly cheat sheet](./.arm_cheat_sheet.png)
Source: [Azeria Labs][azeria-labs-cheat-sheet]
[StackOverflow - What are assembler section directives used for?][assembler-section-directives]
## Exercise 2 - Cache Simulator
In this exercise, we were tasked with writing a cache simulator.
This should run on almost any machine with a proper C compiler.
There is a Makefile and a python script included, which builds both release and debug versions of the program, and tests it with some hardcoded values.
Run the tests by executing:
```command
user@<...>/ex2 $ make test
```
### Haskell variant
I tried writing a haskell clone of this program just for fun, but I ended up never finishing it.
The code exists within a separate folder.
## Exercise 3 - Tetris on Raspberry Pi
NOTE: You will need a Raspberry Pi with a [sense hat][sense-hat] to run this code.
For this exercise, we were tasked with making an existing tetris program run on a sense hat, by writing directly to a Linux framebuffer, and reading joystick input from the Linux input driver.
Move both the Makefile and the code over to the raspberry pi before running.
[tdt4258]: https://www.ntnu.edu/studies/courses/TDT4258
[de1soc]: https://ftp.intel.com/Public/Pub/fpgaup/pub/Intel_Material/18.1/Computer_Systems/DE1-SoC/DE1-SoC_Computer_ARM.pdf
[cpulator]: https://cpulator.01xz.net/?sys=arm-de1soc
[azeria-labs-cheat-sheet]: https://azeria-labs.com/assembly-basics-cheatsheet/
[sense-hat]: https://www.raspberrypi.com/products/sense-hat/
[assembler-section-directives]: https://stackoverflow.com/questions/55107587/what-are-assembler-section-directives-used-for