53 lines
1.9 KiB
Markdown
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
|