From 6f7bdb20791f63dac8e079ec4176ceb65b9a245c Mon Sep 17 00:00:00 2001 From: Brage <5640782+2xic@users.noreply.github.com> Date: Thu, 13 Feb 2025 22:56:25 +0100 Subject: [PATCH 1/4] Fix incorrect phi usage example --- vyper/venom/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vyper/venom/README.md b/vyper/venom/README.md index 964f52b524..e3433c9bd6 100644 --- a/vyper/venom/README.md +++ b/vyper/venom/README.md @@ -233,7 +233,7 @@ Assembly can be inspected with `-f asm`, whereas an opcode view of the final byt `PUSH1 12 PUSH1 24 _mem_deploy_end ADD MSTORE`. - `phi` - ``` - out = phi %var_a, label_a, %var_b, label_b + out = phi label_a, %var_a, label_b, %var_b ``` - Because in SSA form each variable is assigned just once, it is tricky to handle that variables may be assigned to something different based on which program path was taken. - Therefore, we use `phi` instructions. They are are magic instructions, used in basic blocks where the control flow path merges. From 7235d5bde9072bc9814af5fecc51ddc192fc0a14 Mon Sep 17 00:00:00 2001 From: Brage <5640782+2xic@users.noreply.github.com> Date: Thu, 13 Feb 2025 23:26:00 +0100 Subject: [PATCH 2/4] Fix jnz instruction --- vyper/venom/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vyper/venom/README.md b/vyper/venom/README.md index e3433c9bd6..938ef2b207 100644 --- a/vyper/venom/README.md +++ b/vyper/venom/README.md @@ -361,14 +361,14 @@ Assembly can be inspected with `-f asm`, whereas an opcode view of the final byt - Translates to `label JUMP`. - `jnz` - ``` - jnz label1, label2, op + jnz op, label1, label2 ``` - A conditional jump depending on the value of `op`. - Jumps to `label2` when `op` is not zero, otherwise jumps to `label1`. - For example ``` %op = 15 - jnz label1, label2, %op + jnz %op, @label1, @label2 ``` could translate to: `PUSH1 15 label2 JUMPI label1 JUMP`. - `djmp` From 678359e60d5f9d536653b35e10fe5d1b14e62fc2 Mon Sep 17 00:00:00 2001 From: Brage <5640782+2xic@users.noreply.github.com> Date: Thu, 13 Feb 2025 23:26:59 +0100 Subject: [PATCH 3/4] Fix example code in venom parser readme --- vyper/venom/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/vyper/venom/README.md b/vyper/venom/README.md index 938ef2b207..e18ff8aff8 100644 --- a/vyper/venom/README.md +++ b/vyper/venom/README.md @@ -38,7 +38,7 @@ function global { selector_bucket_0: %3 = xor %2, 1579456981 %4 = iszero %3 - jnz @1, @2, %4 + jnz %4, @1, @2 1: jmp @fallback @@ -55,8 +55,6 @@ function global { fallback: revert 0, 0 } - -[data] ``` ### Grammar From 33e9e3cc9cf618bd2f87ce0f57a0348875920e29 Mon Sep 17 00:00:00 2001 From: Brage <5640782+2xic@users.noreply.github.com> Date: Thu, 13 Feb 2025 23:41:24 +0100 Subject: [PATCH 4/4] Correctly fix example code for venom --- vyper/venom/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vyper/venom/README.md b/vyper/venom/README.md index e18ff8aff8..262e2a982c 100644 --- a/vyper/venom/README.md +++ b/vyper/venom/README.md @@ -38,16 +38,16 @@ function global { selector_bucket_0: %3 = xor %2, 1579456981 %4 = iszero %3 - jnz %4, @1, @2 + jnz %4, @true, @false - 1: + false: jmp @fallback - 2: + true: %5 = callvalue %6 = calldatasize - %7 = lt %6, 164 - %8 = or %5, %7 + %7 = lt 164, %6 + %8 = or %7, %5 %9 = iszero %8 assert %9 stop