LLVM backend for an abstract machine
€250-750 EUR
Paid on delivery
We are in urgent need of an LLVM developer/specialist/guru for a specific short term, full-time commercial project.
The task is to develop an LLVM backend for our in-house typed-assembly language named NAC (N-Address Code). The backend should be able to translate LLVM IR to NAC. NAC is both an abstract machine as well as an intermediate representation for most of our in-house tools. A manual of the NAC programming language is attached in addition to other helpful materials.
The developer will be required to:
1) Develop the backend as part of the LLVM 3.3 version (latest release) or the current mainline (which ever is deemed more appropriate). You will be requested to not disclose the code to any third party or reuse it for your own projects. Further, you will be requested to not use any code repository allowing public access.
2) Translate valid LLVM IR to NAC. Please note that NAC: a) does not support structs and unions, b) arrays are single-dimensional. For this reason you will need to use the LLVM infrastructure for struct/union decomposition and array flattening. This is also the situation for classic hardware targets, e.g. RISC machines. On the other side, NAC supports custom floating-point arithmetic, so both float and double arithmetic should be supported (long doubles is not an immediate priority).
3) We expect that the working NAC backend will be able to process realistic, large-scale ANSI/ISO C codes. We suggest that you use the CHStone test suite [url removed, login to view] for evaluation; all these codes should produce valid NAC. Please use clang for C-to-LLVM translation.
You may choose to use the tblgen tool for backend development. Among the existing LLVM backends in the official release, the PTX backend may be considered somewhat close to NAC since it is an "abstract" machine as well. On the other side, the approach used by the LLVM 3.0 C backend (custom backend not using tblgen) or the up-to-date C++ (Cpp) backend may also be viable.
You will also be required to develop an abstract machine simulator for NAC (in C, C++ or awk, preferably) in order to simulate the behavior of the generated NAC programs.
Project ID: #5144750
About the project
5 freelancers are bidding on average €1055 for this job
I am expert in LLVM. i have 8+ years of experience. Can we discuss the project. Please initiate a chat with me so that we can discuss the project at a broader level