Comments (2)
Hi, it may be a little complex to dump the pre-compiled bytecode with well-formed human readable format, is it good to dump the opcode mnemonics instead of the hex value? Here is the patch:
diff --git a/core/iwasm/interpreter/wasm_loader.c b/core/iwasm/interpreter/wasm_loader.c
index 8bf2ed92..2a713f3a 100644
--- a/core/iwasm/interpreter/wasm_loader.c
+++ b/core/iwasm/interpreter/wasm_loader.c
@@ -7604,6 +7604,9 @@ fail:
#if WASM_ENABLE_FAST_INTERP != 0
#if WASM_DEBUG_PREPROCESSOR != 0
+#define HANDLE_OPCODE(opcode) #opcode
+DEFINE_GOTO_TABLE(const char *, opcode_names);
+#undef HANDLE_OPCODE
#define LOG_OP(...) os_printf(__VA_ARGS__)
#else
#define LOG_OP(...) (void)0
@@ -8514,7 +8517,7 @@ fail:
#define emit_label(opcode) \
do { \
wasm_loader_emit_ptr(loader_ctx, handle_table[opcode]); \
- LOG_OP("\nemit_op [%02x]\t", opcode); \
+ LOG_OP("\nemit_op [%s]\t", opcode_names[opcode]); \
} while (0)
#define skip_label() \
do { \
And the output is like:
Processing func | [0] params | [0] locals | [0] return
emit_op [WASM_OP_END]
delete last op
emit_op [WASM_OP_RETURN]
emit_op [WASM_OP_END]
delete last op
emit_op [WASM_OP_RETURN]
Processing func | [0] params | [4] locals | [0] return
emit_op [WASM_OP_GET_GLOBAL] 0 4
emit_op [WASM_OP_I32_CONST]
delete last op
#### new const [1]: 16
emit_op [WASM_OP_I32_SUB] -1 4 5
emit_op [WASM_OP_TEE_LOCAL]
delete last op
emit_op [EXT_OP_TEE_LOCAL_FAST] 0 5
emit_op [WASM_OP_SET_GLOBAL] 0 5
emit_op [WASM_OP_CALL] 47
emit_op [WASM_OP_I32_CONST]
delete last op
#### new const [2]: 3
emit_op [WASM_OP_SET_LOCAL]
delete last op
from wasm-micro-runtime.
is it good to dump the opcode mnemonics instead of the hex value?
yes, it's nice.
i'm also thinking to process "delete last op" automatically by having a one-line buffer.
from wasm-micro-runtime.
Related Issues (20)
- There is an issue using sockets in wasm. HOT 11
- Empty `fd_pread` fails when it should succeed HOT 2
- wasm_is_reftype_supers_of_extern seems unused HOT 1
- Unexpected exception on fast interpreter mode HOT 2
- Unexpected behavior on fast interpreter mode HOT 2
- Wrong execution reuslt on fast interpreter mode HOT 2
- aot_load_const_from_table is inefficient
- "duplicate export name" check is O(n^2) HOT 3
- Compilation errors when build iwasm with GC and EH support
- iwasm: WASM module load failed: struct or array as field is not supported in constant expr HOT 6
- iwasm: WASM module load failed: type mismatch: expect (ref null ht) but got other1 unknown type HOT 8
- exception handler intercepts c++ exceptions in the host on windows HOT 4
- WASM module instantiate failed on Mac HOT 1
- aot: xtensa xip triggers llvm assertion failure
- BH_DEBUG not set in multi-configuration cmake (eg. visual studio)
- printf_wrapper (libc builtin) makes multiple calls to os_printf with individual characters HOT 6
- Can AOT file built on windows run directly on other platforms? HOT 5
- How to load and run another wasm in a running wasm? HOT 12
- Exception Handling Support in Fast Interpreter HOT 1
- iwasm with aot file fail with SIGSEGV HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wasm-micro-runtime.