hex.sub.init

This is where the sub “truth” tables are. must be called once if you want to use hex.sub (hex.init calls it).
Its 9-bits are expected to be {carry&lt;<8 | src&lt;<4 | dst} at the jump to it (for the src,dst hexes, and the carry bit, of the sub operation).
Its 9-bits are expected to be {new_carry&lt;<8} after the jump to it.

Signature

def init @ switch__without_carry, switch__with_carry, flip_carry, clean_table_entry, end < ..tables.res > dst { ... }

Defined in hex/math.fj — lines 260–289 (view on GitHub).

Complexity

  • Time: 8 (when jumping to dst, until finished)

  • Space: 1570

See the complexity glossary for what @, w, dw, dbit, n mean.

Requires init

The following must be initialised before this macro is invoked:

  • hex.tables.init_shared (or hex.init)

Output labels

This macro exposes labels into the caller’s scope via >:

  • dst — This variable is an 9-bit variable (in a single op, [dbit,dbit+9)).

Source

Depends on

Used by

Example uses


← Previous: hex.sub.set_carry