Skip to content

Machine-generate instruction implementation code? #2414

Description

@kripken

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

{
  "classes": [
    {
      "name": "Binary",
      "fields": [
        { "name": "op", "type": "BinaryOp" },
        { "name": "left", "type": "Expression*" },
        { "name": "right", "type": "Expression*" }
      }
    }
  ]
}

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions