This repository has been archived on 2024-12-04. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Nils Hölscher b7bf7342d2 better help message for the script. 2022-04-19 12:04:12 +02:00
.vscode Gitignore, debugscript, and some linting. 2022-04-19 11:09:17 +02:00
CacheAnalysisPass removed TODOs 2022-04-19 11:13:19 +02:00
include first commit 2022-04-19 10:56:42 +02:00
test first commit 2022-04-19 10:56:42 +02:00
.clang-format Gitignore, debugscript, and some linting. 2022-04-19 11:09:17 +02:00
.clang-tidy Gitignore, debugscript, and some linting. 2022-04-19 11:09:17 +02:00
.gitignore Gitignore, debugscript, and some linting. 2022-04-19 11:09:17 +02:00
Dockerfile first commit 2022-04-19 10:56:42 +02:00
LICENSE first commit 2022-04-19 10:56:42 +02:00
README.md removed TODOs 2022-04-19 11:13:19 +02:00
helper.sh better help message for the script. 2022-04-19 12:04:12 +02:00

README.md

RTSA-lab01-CacheAnalysis

In this lab session you will learn how to implement a LRU cache in abstract representation. The Goal is to implement an LRU must Join in include/AbstractState.h The Project can build, tested and Evaluated with the Helper Script.

Disclaimer

This is the first time we provide this exercise. Should you encounter something you think is a Bug, please let me know, during lab sessions.

Also keep track of the Repository as I may add more features to the script.

Setup

We recommend using docker and VS Code for setup. If this is not your preferred Setup, take a look in the Docker file for the dependencies.

Also we do not support the usage of Windows, Linux is free of charge so get a copy.

Setting Docker up:

1.) install docker and VS Code on your Distribution.

https://docs.docker.com/get-docker/

https://code.visualstudio.com/

For this setup you cannot use the OSS version of VS code or the version from Snap, as the remote development extensions will not work.

2.) We recommend you install the following extensions in vs code

C/C++, clangd, Docker and Remote Development

3.) Use the helper script to build and run a Container

$ ./helper.sh docker

This will build a docker image and run a Docker container with the current directory mounted.

4.) Attach VS Code to the container, in the Docker Tab, and start developing

Debugging

When you are using VS Code you can simply use the Debugging Tab, we prepared a debug script for you. You can also set the following variables in the CacheAnalysisPass/CacheAnalysisPass.cpp file, for more output:

  // Development Options
  bool PrintAddresses = false;
  bool PrintEdges = false;
  bool PrintEdgesPost = false;
  bool DumpToDot = false;
  bool DumpNodes = false;

Use the Helper script

Initial Setup:

$ ./helper.sh all

To get a list of what the helper script can do simply type

$ ./helper.sh 

Run:

Run the pass on a single test. fft1 is recommended during development.

$ ./helper.sh run fft1

Eval:

Runs the Pass on a set of tests and also prints the expected results. This will be used to measure correctness of you implementation.

$ ./helper.sh eval

Use the Terminal (Obsolete if script is used)

This section is not needed, fi you are using the script but for the sake of completeness it is provided anyways.

Initial Setup:

$ mkdir build
$ cd build
$ cmake -DLT_LLVM_INSTALL_DIR=$LLVM_DIR ../CacheAnalysisPass/
$ make
$ cd ..

Run:

$ opt -load-pass-plugin build/libCacheAnalysisPass.so -passes=lru-misses test/crc.ll