-
Notifications
You must be signed in to change notification settings - Fork 786
Machine-generate instruction implementation code? #2414
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
Comments
There are two levels of items for which we could generate code: instruction classes and individual instructions. Your example data would generate an instruction class, but since there are many more individual instructions than instruction classes, I think it would make sense to start by generating code for individual instructions. These are the steps for adding a new instruction class:
Once the new instruction class is added to wasm-traversal.h, the compiler will point out other important places where it needs to be handled. The steps for adding new instructions to existing classes are:
I think a gradual approach would be great. Also, I think it has worked well for the parser generator script to just have the data encoded in a literal python data structure rather than being parsed in from some other format. |
Good point, yeah, starting there might give bigger wins early. |
I think we can simplify the checklist of things to do for new instructions,
https://github.com/WebAssembly/binaryen/blob/master/Contributing.md#adding-support-for-new-instructions
We already generate the wast parser using a python script. We can do something similar for core C++ code, generating code for each of the items in that list, starting from a high level declarative format something like
Practically speaking, we can create the declaration file, then implement the items in that checklist one by one in separate PRs (no need for a single huge change).
Thoughts?
The text was updated successfully, but these errors were encountered: