Skip to content

Inconsistencies across multiple pages of instruction lists #2020

@tadd

Description

@tadd

Hello, I'm beginning to study Wasm as a hobby. I think I've found some editorial bugs.

As a first step in learning, I wanted to know what kind of instructions Wasm has, so I searched and found wasm-ops. That chart was a great help, but I noticed it was a bit outdated, so I next tried to create a new chart.

Since I was at it, I thought I'd automate the table creation and started writing a script. But now, as a beginner, I'm a bit confused.

When I generated a table from the instruction list, I realized multiple name inconsistencies within the specification pages themselves.

I found such inconsistencies on (at least) three pages. I believe that each pages provide a comprehensive list of Wasm instructions.

  1. Index of Instructions1
  2. Instructions in Binary Format section2
  3. Instructions in Structure section3

The following are examples of contradiction. I'm not sure which one is correct, but could you fix the inconsistencies?

  • 1 contains end (0x0B), but 3 does not, and 2 does not refer to it in instr :: = definition
  • 1 and 3 contain call_ref (0x14), but 2 does not
  • 1 contains instructions that end with {name}_{numtype}_{sx} (like i32.trunc_f32_u), but others contain {name}_{sx}_{numtype} (i32.trunc_u_f32) with the same {name}
  • 2 says 0xBB is f32.promote_f64 but others say it's f64.promote_f32
  • [Update] 2 and Text Format4 categorizes struct.*/array.* as "Reference Instructions," as the same as ref.*, but 3 categorizes them as a separate "Aggregate Instructions"
    • In addition, Validation5 categorizes them as "Aggregate Reference Instructions" (another different name)

However, I don't believe the above is complete. For example, there seem to be at least three other pages titled "Instructions,"564 but I haven't investigated those yet.

I would appreciate it if they could be corrected.

Footnotes

  1. https://webassembly.github.io/spec/core/appendix/index-instructions.html 2 3 4

  2. https://webassembly.github.io/spec/core/binary/instructions.html 2 3 4 5

  3. https://webassembly.github.io/spec/core/syntax/instructions.html 2 3 4

  4. https://webassembly.github.io/spec/core/text/instructions.html 2

  5. https://webassembly.github.io/spec/core/valid/instructions.html 2

  6. https://webassembly.github.io/spec/core/exec/instructions.html

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions