Making a WebAssembly interpreter in Ruby, part 14: instruction sequence flattening

preview_player
Показать описание

00:00:00 — Waiting to start
00:00:23 — Hello
00:01:22 — Retro
00:08:56 — Temporarily unflatten function bodies to keep them evaluating
00:39:52 — Unfold remaining plain instructions
00:58:33 — Unfold structured instructions
01:21:25 — Remove unnecessary local variable assignments
01:33:43 — Consume the correct number of arguments in #evaluate_numeric_instruction
01:40:03 — Consume the correct number of arguments for plain instructions in #evaluate
01:51:53 — Define #consume_structured_instruction method
02:20:53 — Consume the correct number of arguments for structured instructions in #evaluate
02:23:09 — Support evaluating arrays of instructions when evaluating `block` and `loop`
03:26:21 — Define #split_on_else method
03:39:12 — Correctly split `if` body into consequent and alternative in #evaluate
03:42:06 — Flatten expressions when unfolding
03:47:52 — Find and catch labels correctly in loops
03:58:32 — Remove defensive `nil` returns
04:02:48 — Combine some #unfold cases
04:19:18 — Combine `block`/`loop`/`if` execution handling
04:32:11 — Combine `block`/`loop`/`if` unfolding
05:04:09 — Add support for `memory` with minimum size only
05:06:00 — Skip `type`, `table` and `global` commands for now
05:06:17 — Implement the `nop` instruction
05:06:41 — Support multi-value result types
05:14:19 — Add dummy implementation of `call` instruction
05:15:08 — Implement the `drop` instruction
05:15:49 — Make `else` clause optional when unfolding `if`
05:16:47 — Disable find pattern warnings in test script
05:18:06 — Wrapping up
05:19:38 — Bye
Рекомендации по теме
visit shbcf.ru