From Free Pascal wiki


These steps are critical for completion in order to have wasm a full scope CPU target for FPC compiler

Feature Status Description
Assembly (textual wasm) working Pick an assembler utility that's sequence instruction (FPC) friendly

FPC should produce a textual assembly file

Linking in progress Pick an linker utility that's sequence instruction (FPC) friendly.

Linker is a moving target. As a new feature is added, the linking needs to be re-verified.

Basic function calls and local variables working Implement direct function calls, with passing basic parameters (that don't require any memory. I.e. int and floats)
Verify float-point values As the float points are being converted from the textual format. it's necessary to make sure that the proper values are generated
Global variables working Implement symbol reference to global variables (basic or complex)

Consider linking - as the index of symbols can change. (Wasm binaries are index based )

Stack/Call frame support working WebAssembly doesn't have any native stack and/or frame support.

It has to be emulated using global and local variables.

Blocking issue: https://github.com/WebAssembly/wabt/issues/1199

Indirect function calls in progress WebAssembly has a specific way of indirect calls

Needed for vmt and procedure variables (callback) calls

VMT Support for calls via virtual method table
RTL.Memory Manager
RTL.(Ansi/Wide) String Manager Not in scope


Future improvements for wasm target. Those a nice to have, but not critical.

Feature Status Description
Debug Info There's very little debugging support in Wasm target at this point.

There's no defined debug info format available.

Internal Writer The binary wasm format is well defined and could be implemented within FPC
Internal Linker

See Also