Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IR design and new backends #20

Open
dvanhorn opened this issue Feb 9, 2021 · 0 comments
Open

IR design and new backends #20

dvanhorn opened this issue Feb 9, 2021 · 0 comments
Assignees

Comments

@dvanhorn
Copy link
Member

dvanhorn commented Feb 9, 2021

The a86 is a nice abstraction of x86, but is still very closely tied to the details of x86. It would be nice to design a slightly higher-level of abstraction intermediate form and then design multiple back-ends, including a86. In particular, it would be great if the compiler didn't have to worry about the stack-alignment mess all the time and this could be handled later in the pipeline.

As for other backends to support: it would be great to support wasm and ARM; wasm is probably pretty easy and ARM may be more involved (and perhaps the right approach is to just target wasm and then use existing tools to target other architectures, e.g. wasmer.io.

I also think it would be fine to target something like LLVM's IR, although I would prefer to emit something that involves a little less "magic" so that future students continue to get a real sense of how everything works down to a level very close to the CPU.

This is the kind of project where an initial working version could be pretty easy to whip up but you could go down the rabbit hole arbitrarily far. This project could also support multiple different teams either competing (with different IR and back end designs) or cooperative (with a shared IR and multiple, independently designed back ends).

@minghui-liu minghui-liu self-assigned this Apr 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants