LLVM backend for an abstract machine

Closed Posted Nov 19, 2013 Paid on delivery
Closed 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.

C Programming C++ Programming Software Development

Project ID: #5144750

About the project

5 proposals Remote project Active Dec 26, 2013

5 freelancers are bidding on average €1055 for this job

fattahaabdul

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

€1368 EUR in 20 days
(2 Reviews)
3.0
webdevit

php/mysql\opencart team,php/mysql\opencart team,php/mysql\opencart team,php/mysql\opencart team,php/mysql\opencart team,php/mysql\opencart team,php/mysql\opencart team,php/mysql\opencart team,php/mysql\opencart team,ph More

€515 EUR in 3 days
(0 Reviews)
0.0