diff options
author | terminaldweller <thabogre@gmail.com> | 2022-02-14 19:22:31 +0000 |
---|---|---|
committer | terminaldweller <thabogre@gmail.com> | 2022-02-14 19:22:31 +0000 |
commit | bddd10b1dab1cb88905489f93a77b5a8c465650b (patch) | |
tree | d33e31e4da2b4da846969c4ab21fe45712cdf853 /opcodes.py | |
parent | listened to lgtm... (diff) | |
download | dwasm-bddd10b1dab1cb88905489f93a77b5a8c465650b.tar.gz dwasm-bddd10b1dab1cb88905489f93a77b5a8c465650b.zip |
Diffstat (limited to '')
-rw-r--r-- | opcodes.py | 691 |
1 files changed, 447 insertions, 244 deletions
@@ -1,6 +1,21 @@ from enum import Enum -SectionID = {0:"custom", 1:"type", 2:"import", 3:"function", 4:"table", 5:"memory", 6:"global", 7:"export", 8:"start", 9:"element", 10:"code", 11:"data", 63:"unknown"} +SectionID = { + 0: "custom", + 1: "type", + 2: "import", + 3: "function", + 4: "table", + 5: "memory", + 6: "global", + 7: "export", + 8: "start", + 9: "element", + 10: "code", + 11: "data", + 63: "unknown", +} + class RelocType(Enum): R_WEBASSEMBLY_FUNCTION_INDEX_LEB = 0 @@ -14,12 +29,14 @@ class RelocType(Enum): R_WEBASSEMPLY_FUNCTION_OFFSET_I32 = 8 R_WEBASSEMBLY_SECTION_OFFSET_I32 = 9 + class LinkingSubsection(Enum): WASM_SEGMENT_INFO = 5 WASM_INIT_FUNCS = 6 WASM_COMDAT_INFO = 7 WASM_SYMBOL_TABLE = 8 + class TypeType(Enum): none = 1 lebu = 2 @@ -27,27 +44,49 @@ class TypeType(Enum): flot = 4 dobl = 5 -class Syminfo_Kind(): + +class Syminfo_Kind: SYMTAB_FUNCTION = 0 SYMTAB_DATA = 1 SYMTAB_GLOBAL = 2 SYMTAB_SECTION = 3 -TypeKS = [['uint8', 8, TypeType.none], ['uint16', 16, TypeType.none], - ['uint32', 32, TypeType.none], ['uint64', 64, TypeType.none], - ['varuint1', 1, TypeType.lebu], ['varuint7', 7, TypeType.lebu], - ['varuint32', 32, TypeType.lebu], ['varuint64', 64, TypeType.lebu], - ['varint1', 1, TypeType.lebs], ['varint7', 7, TypeType.lebs], - ['varint32', 32, TypeType.lebs], ['varint64', 64, TypeType.lebs]] -TypeDic = {'uint8': 1, 'uint16': 2, 'uint32': 4, 'uint64': 8, - 'varuint1': 1, 'varuint7': 1, 'varuint32': 4, 'varuint64': 8, - 'varint1': 1, 'varint7': 1, 'varint32': 4, 'varint64': 8} +TypeKS = [ + ["uint8", 8, TypeType.none], + ["uint16", 16, TypeType.none], + ["uint32", 32, TypeType.none], + ["uint64", 64, TypeType.none], + ["varuint1", 1, TypeType.lebu], + ["varuint7", 7, TypeType.lebu], + ["varuint32", 32, TypeType.lebu], + ["varuint64", 64, TypeType.lebu], + ["varint1", 1, TypeType.lebs], + ["varint7", 7, TypeType.lebs], + ["varint32", 32, TypeType.lebs], + ["varint64", 64, TypeType.lebs], +] + +TypeDic = { + "uint8": 1, + "uint16": 2, + "uint32": 4, + "uint64": 8, + "varuint1": 1, + "varuint7": 1, + "varuint32": 4, + "varuint64": 8, + "varint1": 1, + "varint7": 1, + "varint32": 4, + "varint64": 8, +} + # holds the version 1.0 wasm opcodes and immediates class WASM_OP_Code: version_number = 0x01 - magic_number = 0x6d736100 + magic_number = 0x6D736100 PAGE_SIZE = 65536 uint8 = 1 uint16 = 2 @@ -64,269 +103,433 @@ class WASM_OP_Code: floatt = 4 doublet = 8 - all_ops = [('i32', '7f', False), ('i64', '7e', False), ('f32', '7d', False), - ('f64', '7c', False), ('anyfunc', '7b', False), - ('func', '60', False), ('empty_block_type', '40', False), - ('unreachable', '00', False), ('nop', '01', False), - ('block', '02', True, ('varuint7')), - ('loop', '03', True, ('varuint7')), - ('if', '04', True, ('varuint7')), ('else', '05', False), - ('end', '0b', False), ('br', '0c', True, ('varuint32')), - ('br_if', '0d', True, ('varuint32')), - ('br_table', '0e', True, ('varuint32', 'varuint32', 'varuint32')), - ('return', '0f', False), ('call', '10', True, ('varuint32')), - ('call_indirect', '11', True, ('varuint32', 'varuint1')), - ('drop', '1a', False), ('select', '1b', False), - ('get_local', '20', True, ('varuint32')), - ('set_local', '21', True, ('varuint32')), - ('tee_local', '22', True, ('varuint32')), - ('get_global', '23', True, ('varuint32')), - ('set_global', '24', True, ('varuint32')), - ('i32.load', '28', True, ('varuint32', 'varuint32')), - ('i64.load', '29', True, ('varuint32', 'varuint32')), - ('f32.load', '2a', True, ('varuint32', 'varuint32')), - ('f64.load', '2b', True, ('varuint32', 'varuint32')), - ('i32.load8_s', '2c', True, ('varuint32', 'varuint32')), - ('i32.load8_u', '2d', True, ('varuint32', 'varuint32')), - ('i32.load16_s', '2e', True, ('varuint32', 'varuint32')), - ('i32.load16_u', '2f', True, ('varuint32', 'varuint32')), - ('i64.load8_s', '30', True, ('varuint32', 'varuint32')), - ('i64.load8_u', '31', True, ('varuint32', 'varuint32')), - ('i64.load16_s', '32', True, ('varuint32', 'varuint32')), - ('i64.load16_u', '33', True, ('varuint32', 'varuint32')), - ('i64.load32_s', '34', True, ('varuint32', 'varuint32')), - ('i64.load32_u', '35', True, ('varuint32', 'varuint32')), - ('i32.store', '36', True, ('varuint32', 'varuint32')), - ('i64.store', '37', True, ('varuint32', 'varuint32')), - ('f32.store', '38', True, ('varuint32', 'varuint32')), - ('f64.store', '39', True, ('varuint32', 'varuint32')), - ('i32.store8', '3a', True, ('varuint32', 'varuint32')), - ('i32.store16', '3b', True, ('varuint32', 'varuint32')), - ('i64.store8', '3c', True, ('varuint32', 'varuint32')), - ('i64.store16', '3d', True, ('varuint32', 'varuint32')), - ('i64.store32', '3e', True, ('varuint32', 'varuint32')), - ('current_memory', '3f', True, ('varuint1')), - ('grow_memory', '40', True, ('varuint1')), - ('i32.const', '41', True, ('varint32')), - ('i64.const', '42', True, ('varint64')), - ('f32.const', '43', True, ('uint32')), - ('f64.const', '44', True, ('uint64')), - ('i32.eqz', '45', False), ('i32.eq', '46', False), - ('i32.ne', '47', False), ('i32.lt_s', '48', False), - ('i32.lt_u', '49', False), ('i32.gt_s', '4a', False), - ('i32.gt_u', '4b', False), ('i32.le_s', '4c', False), - ('i32.le_u', '4d', False), ('i32.ge_s', '4e', False), - ('i32.ge_u', '4f', False), ('i64.eqz', '50', False), - ('i64.eq', '51', False), ('i64.ne', '52', False), - ('i64.lt_s', '53', False), ('i64.lt_u', '54', False), - ('i64.gt_s', '55', False), ('i64.gt_u', '56', False), - ('i64.le_s', '57', False), ('i64.le_u', '58', False), - ('i64.ge_s', '59', False), ('i64.ge_u', '5a', False), - ('f32.eq', '5b', False), ('f32.ne', '5c', False), - ('f32.lt', '5d', False), ('f32.gt', '5e', False), - ('f32.le', '5f', False), ('f32.ge', '60', False), - ('f64.eq', '61', False), ('f64.ne', '62', False), - ('f64.lt', '63', False), ('f64.gt', '64', False), - ('f64.le', '65', False), ('f64.ge', '66', False), - ('i32.clz', '67', False), ('i32.ctz', '68', False), - ('i32.popcnt', '69', False), ('i32.add', '6a', False), - ('i32.sub', '6b', False), ('i32.mul', '6c', False), - ('i32.div_s', '6d', False), ('i32.div_u', '6e', False), - ('i32.rem_s', '6f', False), ('i32.rem_u', '70', False), - ('i32.and', '71', False), ('i32.or', '72', False), - ('i32.xor', '73', False), ('i32.shl', '74', False), - ('i32.shr_s', '75', False), ('i32.shr_u', '76', False), - ('i32.rotl', '77', False), ('i32.rotr', '78', False), - ('i64.clz', '79', False), ('i64.ctz', '7a', False), - ('i64.popcnt', '7b', False), ('i64.add', '7c', False), - ('i64.sub', '7d', False), ('i64.mul', '7e', False), - ('i64.div_s', '7f', False), ('i64.div_u', '80', False), - ('i64.rem_s', '81', False), ('i64.rem_u', '82', False), - ('i64.and', '83', False), ('i64.or', '84', False), - ('i64.xor', '85', False), ('i64.shl', '86', False), - ('i64.shr_s', '87', False), ('i64.shr_u', '88', False), - ('i64.rotl', '89', False), ('i63.rotr', '8a', False), - ('f32.abs', '8b', False), ('f32.neg', '8c', False), - ('f32.ceil', '8d', False), ('f32.floor', '8e', False), - ('f32.trunc', '8f', False), ('f32.nearest', '90', False), - ('f32.sqrt', '91', False), ('f32.add', '92', False), - ('f32.sub', '93', False), ('f32.mul', '94', False), - ('f32.div', '95', False), ('f32.min', '96', False), - ('f32.max', '97', False), ('f32.copysign', '98', False), - ('f64.abs', '99', False), ('f64.neg', '9a', False), - ('f64.ceil', '9b', False), ('f64.floor', '9c', False), - ('f64.trunc', '9d', False), ('f64.nearest', '9e', False), - ('f64.sqrt', '9f', False), ('f64.add', 'a0', False), - ('f64.sub', 'a1', False), ('f64.mul', 'a2', False), - ('f64.div', 'a3', False), ('f64.min', 'a4', False), - ('f64.max', 'a5', False), ('f64.copysign', 'a6', False), - ('i32.wrap/i64', 'a7', False), ('i32.trunc_s/f32', 'a8', False), - ('i32.trunc_u/f32', 'a9', False), - ('i32.trunc_s/f64', 'aa', False), - ('i32.trunc_u/f64', 'ab', False), - ('i64.extend_s/i32', 'ac', False), - ('i64.extend_u/i32', 'ad', False), - ('i64.trunc_s/f32', 'ae', False), - ('i64.trunc_u/f32', 'af', False), - ('i64.trunc_s/f64', 'b0', False), - ('i64.trunc_u/f64', 'b1', False), - ('f32.convert_s/i32', 'b2', False), - ('f32.convert_u/i32', 'b3', False), - ('f32.convert_s/i64', 'b4', False), - ('f32.convert_u/i64', 'b5', False), - ('f32.demote/f64', 'b6', False), - ('f64.convert_s/i32', 'b7', False), - ('f64.convert_u/i32', 'b8', False), - ('f64.convert_s/i64', 'b9', False), - ('f64.convert_u/i64', 'ba', False), - ('f64.promote/f32', 'bb', False), - ('i32.reinterpret/f32', 'bc', False), - ('i64.reinterpret/f64', 'bd', False), - ('f32.reinterpret/i32', 'be', False), - ('f64.reinterpret/i64', 'bf', False)] + all_ops = [ + ("i32", "7f", False), + ("i64", "7e", False), + ("f32", "7d", False), + ("f64", "7c", False), + ("anyfunc", "7b", False), + ("func", "60", False), + ("empty_block_type", "40", False), + ("unreachable", "00", False), + ("nop", "01", False), + ("block", "02", True, ("varuint7")), + ("loop", "03", True, ("varuint7")), + ("if", "04", True, ("varuint7")), + ("else", "05", False), + ("end", "0b", False), + ("br", "0c", True, ("varuint32")), + ("br_if", "0d", True, ("varuint32")), + ("br_table", "0e", True, ("varuint32", "varuint32", "varuint32")), + ("return", "0f", False), + ("call", "10", True, ("varuint32")), + ("call_indirect", "11", True, ("varuint32", "varuint1")), + ("drop", "1a", False), + ("select", "1b", False), + ("get_local", "20", True, ("varuint32")), + ("set_local", "21", True, ("varuint32")), + ("tee_local", "22", True, ("varuint32")), + ("get_global", "23", True, ("varuint32")), + ("set_global", "24", True, ("varuint32")), + ("i32.load", "28", True, ("varuint32", "varuint32")), + ("i64.load", "29", True, ("varuint32", "varuint32")), + ("f32.load", "2a", True, ("varuint32", "varuint32")), + ("f64.load", "2b", True, ("varuint32", "varuint32")), + ("i32.load8_s", "2c", True, ("varuint32", "varuint32")), + ("i32.load8_u", "2d", True, ("varuint32", "varuint32")), + ("i32.load16_s", "2e", True, ("varuint32", "varuint32")), + ("i32.load16_u", "2f", True, ("varuint32", "varuint32")), + ("i64.load8_s", "30", True, ("varuint32", "varuint32")), + ("i64.load8_u", "31", True, ("varuint32", "varuint32")), + ("i64.load16_s", "32", True, ("varuint32", "varuint32")), + ("i64.load16_u", "33", True, ("varuint32", "varuint32")), + ("i64.load32_s", "34", True, ("varuint32", "varuint32")), + ("i64.load32_u", "35", True, ("varuint32", "varuint32")), + ("i32.store", "36", True, ("varuint32", "varuint32")), + ("i64.store", "37", True, ("varuint32", "varuint32")), + ("f32.store", "38", True, ("varuint32", "varuint32")), + ("f64.store", "39", True, ("varuint32", "varuint32")), + ("i32.store8", "3a", True, ("varuint32", "varuint32")), + ("i32.store16", "3b", True, ("varuint32", "varuint32")), + ("i64.store8", "3c", True, ("varuint32", "varuint32")), + ("i64.store16", "3d", True, ("varuint32", "varuint32")), + ("i64.store32", "3e", True, ("varuint32", "varuint32")), + ("current_memory", "3f", True, ("varuint1")), + ("grow_memory", "40", True, ("varuint1")), + ("i32.const", "41", True, ("varint32")), + ("i64.const", "42", True, ("varint64")), + ("f32.const", "43", True, ("uint32")), + ("f64.const", "44", True, ("uint64")), + ("i32.eqz", "45", False), + ("i32.eq", "46", False), + ("i32.ne", "47", False), + ("i32.lt_s", "48", False), + ("i32.lt_u", "49", False), + ("i32.gt_s", "4a", False), + ("i32.gt_u", "4b", False), + ("i32.le_s", "4c", False), + ("i32.le_u", "4d", False), + ("i32.ge_s", "4e", False), + ("i32.ge_u", "4f", False), + ("i64.eqz", "50", False), + ("i64.eq", "51", False), + ("i64.ne", "52", False), + ("i64.lt_s", "53", False), + ("i64.lt_u", "54", False), + ("i64.gt_s", "55", False), + ("i64.gt_u", "56", False), + ("i64.le_s", "57", False), + ("i64.le_u", "58", False), + ("i64.ge_s", "59", False), + ("i64.ge_u", "5a", False), + ("f32.eq", "5b", False), + ("f32.ne", "5c", False), + ("f32.lt", "5d", False), + ("f32.gt", "5e", False), + ("f32.le", "5f", False), + ("f32.ge", "60", False), + ("f64.eq", "61", False), + ("f64.ne", "62", False), + ("f64.lt", "63", False), + ("f64.gt", "64", False), + ("f64.le", "65", False), + ("f64.ge", "66", False), + ("i32.clz", "67", False), + ("i32.ctz", "68", False), + ("i32.popcnt", "69", False), + ("i32.add", "6a", False), + ("i32.sub", "6b", False), + ("i32.mul", "6c", False), + ("i32.div_s", "6d", False), + ("i32.div_u", "6e", False), + ("i32.rem_s", "6f", False), + ("i32.rem_u", "70", False), + ("i32.and", "71", False), + ("i32.or", "72", False), + ("i32.xor", "73", False), + ("i32.shl", "74", False), + ("i32.shr_s", "75", False), + ("i32.shr_u", "76", False), + ("i32.rotl", "77", False), + ("i32.rotr", "78", False), + ("i64.clz", "79", False), + ("i64.ctz", "7a", False), + ("i64.popcnt", "7b", False), + ("i64.add", "7c", False), + ("i64.sub", "7d", False), + ("i64.mul", "7e", False), + ("i64.div_s", "7f", False), + ("i64.div_u", "80", False), + ("i64.rem_s", "81", False), + ("i64.rem_u", "82", False), + ("i64.and", "83", False), + ("i64.or", "84", False), + ("i64.xor", "85", False), + ("i64.shl", "86", False), + ("i64.shr_s", "87", False), + ("i64.shr_u", "88", False), + ("i64.rotl", "89", False), + ("i63.rotr", "8a", False), + ("f32.abs", "8b", False), + ("f32.neg", "8c", False), + ("f32.ceil", "8d", False), + ("f32.floor", "8e", False), + ("f32.trunc", "8f", False), + ("f32.nearest", "90", False), + ("f32.sqrt", "91", False), + ("f32.add", "92", False), + ("f32.sub", "93", False), + ("f32.mul", "94", False), + ("f32.div", "95", False), + ("f32.min", "96", False), + ("f32.max", "97", False), + ("f32.copysign", "98", False), + ("f64.abs", "99", False), + ("f64.neg", "9a", False), + ("f64.ceil", "9b", False), + ("f64.floor", "9c", False), + ("f64.trunc", "9d", False), + ("f64.nearest", "9e", False), + ("f64.sqrt", "9f", False), + ("f64.add", "a0", False), + ("f64.sub", "a1", False), + ("f64.mul", "a2", False), + ("f64.div", "a3", False), + ("f64.min", "a4", False), + ("f64.max", "a5", False), + ("f64.copysign", "a6", False), + ("i32.wrap/i64", "a7", False), + ("i32.trunc_s/f32", "a8", False), + ("i32.trunc_u/f32", "a9", False), + ("i32.trunc_s/f64", "aa", False), + ("i32.trunc_u/f64", "ab", False), + ("i64.extend_s/i32", "ac", False), + ("i64.extend_u/i32", "ad", False), + ("i64.trunc_s/f32", "ae", False), + ("i64.trunc_u/f32", "af", False), + ("i64.trunc_s/f64", "b0", False), + ("i64.trunc_u/f64", "b1", False), + ("f32.convert_s/i32", "b2", False), + ("f32.convert_u/i32", "b3", False), + ("f32.convert_s/i64", "b4", False), + ("f32.convert_u/i64", "b5", False), + ("f32.demote/f64", "b6", False), + ("f64.convert_s/i32", "b7", False), + ("f64.convert_u/i32", "b8", False), + ("f64.convert_s/i64", "b9", False), + ("f64.convert_u/i64", "ba", False), + ("f64.promote/f32", "bb", False), + ("i32.reinterpret/f32", "bc", False), + ("i64.reinterpret/f64", "bd", False), + ("f32.reinterpret/i32", "be", False), + ("f64.reinterpret/i64", "bf", False), + ] - type_ops = [('i32', '7f'), ('i64', '7e'), ('f32', '7d'), - ('f64', '7c'), ('anyfunc', '7b'), ('func', '60'), - ('empty_block_type', '40')] + type_ops = [ + ("i32", "7f"), + ("i64", "7e"), + ("f32", "7d"), + ("f64", "7c"), + ("anyfunc", "7b"), + ("func", "60"), + ("empty_block_type", "40"), + ] type_ops_dict = dict(type_ops) type_ops_dict_rev = {v: k for k, v in type_ops_dict.items()} - control_flow_ops = [('unreachable', '00'), ('nop', '01'), - ('block', '02'), ('loop', '03'), - ('if', '04'), ('else', '05'), - ('end', '0b'), ('br', '0c'), - ('br_if', '0d'), ('br_table', '0e'), - ('return', '0f')] + control_flow_ops = [ + ("unreachable", "00"), + ("nop", "01"), + ("block", "02"), + ("loop", "03"), + ("if", "04"), + ("else", "05"), + ("end", "0b"), + ("br", "0c"), + ("br_if", "0d"), + ("br_table", "0e"), + ("return", "0f"), + ] control_flow_ops_dict = dict(control_flow_ops) - control_flow_ops_dict_rev = {v: k for k, v in control_flow_ops_dict.items()} + control_flow_ops_dict_rev = { + v: k for k, v in control_flow_ops_dict.items() + } - call_ops = [('call', '10'), ('call_indirect', '11')] + call_ops = [("call", "10"), ("call_indirect", "11")] call_ops_dict = dict(call_ops) call_ops_dict_rev = {v: k for k, v in call_ops_dict.items()} - param_ops = [('drop', '1a'), ('select', '1b')] + param_ops = [("drop", "1a"), ("select", "1b")] param_ops_dict = dict(param_ops) param_ops_dict_rev = {v: k for k, v in param_ops_dict.items()} - var_access = [('get_local', '20'), ('set_local', '21'), - ('tee_local', '22'), ('get_global', '23'), - ('set_global', '24')] + var_access = [ + ("get_local", "20"), + ("set_local", "21"), + ("tee_local", "22"), + ("get_global", "23"), + ("set_global", "24"), + ] var_access_dict = dict(var_access) var_access_dict_rev = {v: k for k, v in var_access_dict.items()} - mem_ops = [('i32.load', '28'), ('i64.load', '29'), - ('f32.load', '2a'), ('f64.load', '2b'), - ('i32.load8_s', '2c'), ('i32.load8_u', '2d'), - ('i32.load16_s', '2e'), ('i32.load16_u', '2f'), - ('i64.load8_s', '30'), ('i64.load8_u', '31'), - ('i64.load16_s', '32'), ('i64.load16_u', '33'), - ('i64.load32_s', '34'), ('i64.load32_u', '35'), - ('i32.store', '36'), ('i64.store', '37'), - ('f32.store', '38'), ('f64.store', '39'), - ('i32.store8', '3a'), ('i32.store16', '3b'), - ('i64.store8', '3c'), ('i64.store16', '3d'), - ('i64.store32', '3e'), ('current_memory', '3f'), - ('grow_memory', '40')] + mem_ops = [ + ("i32.load", "28"), + ("i64.load", "29"), + ("f32.load", "2a"), + ("f64.load", "2b"), + ("i32.load8_s", "2c"), + ("i32.load8_u", "2d"), + ("i32.load16_s", "2e"), + ("i32.load16_u", "2f"), + ("i64.load8_s", "30"), + ("i64.load8_u", "31"), + ("i64.load16_s", "32"), + ("i64.load16_u", "33"), + ("i64.load32_s", "34"), + ("i64.load32_u", "35"), + ("i32.store", "36"), + ("i64.store", "37"), + ("f32.store", "38"), + ("f64.store", "39"), + ("i32.store8", "3a"), + ("i32.store16", "3b"), + ("i64.store8", "3c"), + ("i64.store16", "3d"), + ("i64.store32", "3e"), + ("current_memory", "3f"), + ("grow_memory", "40"), + ] mem_ops_dict = dict(mem_ops) mem_ops_dict_rev = {v: k for k, v in mem_ops_dict.items()} - consts = [('i32.const', '41'), ('i64.const', '42'), - ('f32.const', '43'), ('f64', '44')] + consts = [ + ("i32.const", "41"), + ("i64.const", "42"), + ("f32.const", "43"), + ("f64", "44"), + ] consts_dict = dict(consts) consts_dict_rev = {v: k for k, v in consts_dict.items()} - comp_ops = [('i32.eqz', '45'), ('i32.eq', '46'), ('i32.ne', '47'), - ('i32.lt_s', '48'), ('i32.lt_u', '49'), - ('i32.gt_s', '4a'), ('i32.gt_u', '4b'), - ('i32.le_s', '4c'), ('i32.le_u', '4d'), - ('i32.ge_s', '4e'), ('i32.ge_u', '4f'), - ('i64.eqz', '50'), ('i64.eq', '51'), - ('i64.ne', '52'), ('i64.lt_s', '53'), - ('i64.lt_u', '54'), ('i64.gt_s', '55'), - ('i64.gt_u', '56'), ('i64.le_s', '57'), - ('i64.le_u', '58'), ('i64.ge_s', '59'), - ('i64.ge_u', '5a'), ('f32.eq', '5b'), - ('f32.ne', '5c'), ('f32.lt', '5d'), - ('f32.gt', '5e'), ('f32.le', '5f'), - ('f32.ge', '60'), ('f64.eq', '61'), - ('f64.ne', '62'), ('f64.lt', '63'), - ('f64.gt', '64'), ('f64.le', '65'), - ('f64.ge', '66')] + comp_ops = [ + ("i32.eqz", "45"), + ("i32.eq", "46"), + ("i32.ne", "47"), + ("i32.lt_s", "48"), + ("i32.lt_u", "49"), + ("i32.gt_s", "4a"), + ("i32.gt_u", "4b"), + ("i32.le_s", "4c"), + ("i32.le_u", "4d"), + ("i32.ge_s", "4e"), + ("i32.ge_u", "4f"), + ("i64.eqz", "50"), + ("i64.eq", "51"), + ("i64.ne", "52"), + ("i64.lt_s", "53"), + ("i64.lt_u", "54"), + ("i64.gt_s", "55"), + ("i64.gt_u", "56"), + ("i64.le_s", "57"), + ("i64.le_u", "58"), + ("i64.ge_s", "59"), + ("i64.ge_u", "5a"), + ("f32.eq", "5b"), + ("f32.ne", "5c"), + ("f32.lt", "5d"), + ("f32.gt", "5e"), + ("f32.le", "5f"), + ("f32.ge", "60"), + ("f64.eq", "61"), + ("f64.ne", "62"), + ("f64.lt", "63"), + ("f64.gt", "64"), + ("f64.le", "65"), + ("f64.ge", "66"), + ] comp_ops_dict = dict(comp_ops) comp_ops_dict_rev = {v: k for k, v in comp_ops_dict.items()} - num_ops = [('i32.clz', '67'), ('i32.ctz', '68'), - ('i32.popcnt', '69'), ('i32.add', '6a'), - ('i32.sub', '6b'), ('i32.mul', '6c'), - ('i32.div_s', '6d'), ('i32.div_u', '6e'), - ('i32.rem_s', '6e'), ('i32.rem_u', '70'), - ('i32.and', '71'), ('i32.or', '72'), - ('i32.xor', '73'), ('i32.shl', '74'), - ('i32.shr_s', '75'), ('i32.shr_u', '76'), - ('i32.rotl', '77'), ('i32.rotr', '78'), - ('i64.clz', '79'), ('i64.ctz', '7a'), - ('i64.popcnt', '7b'), ('i64.add', '7c'), - ('i64.sub', '7d'), ('i64.mul', '7e'), - ('i64.div_s', '7f'), ('i64.div_u', '80'), - ('i64.rem_s', '81'), ('i64.rem_u', '82'), - ('i64.and', '83'), ('i64.or', '84'), - ('i64.xor', '85'), ('i64.shl', '86'), - ('i64.shr_s', '87'), ('i64.shr_u', '88'), - ('i64.rotl', '89'), ('i63.rotr', '8a'), - ('f32.abs', '8b'), ('f32.neg', '8c'), - ('f32.ceil', '8d'), ('f32.floor', '8e'), - ('f32.trunc', '8f'), ('f32.nearest', '90'), - ('f32.sqrt', '91'), ('f32.add', '92'), - ('f32.sub', '93'), ('f32.mul', '94'), - ('f32.div', '95'), ('f32.min', '96'), - ('f32.max', '97'), ('f32.copysign', '98'), - ('f64.abs', '99'), ('f64.neg', '9a'), - ('f64.ceil', '9b'), ('f64.floor', '9c'), - ('f64.trunc', '9d'), ('f64.nearest', '9e'), - ('f64.sqrt', '9f'), ('f64.add', 'a0'), - ('f64.sub', 'a1'), ('f64.mul', 'a2'), - ('f64.div', 'a3'), ('f64.min', 'a4'), - ('f64.max', 'a5'), ('f64.copysign', 'a6')] + num_ops = [ + ("i32.clz", "67"), + ("i32.ctz", "68"), + ("i32.popcnt", "69"), + ("i32.add", "6a"), + ("i32.sub", "6b"), + ("i32.mul", "6c"), + ("i32.div_s", "6d"), + ("i32.div_u", "6e"), + ("i32.rem_s", "6e"), + ("i32.rem_u", "70"), + ("i32.and", "71"), + ("i32.or", "72"), + ("i32.xor", "73"), + ("i32.shl", "74"), + ("i32.shr_s", "75"), + ("i32.shr_u", "76"), + ("i32.rotl", "77"), + ("i32.rotr", "78"), + ("i64.clz", "79"), + ("i64.ctz", "7a"), + ("i64.popcnt", "7b"), + ("i64.add", "7c"), + ("i64.sub", "7d"), + ("i64.mul", "7e"), + ("i64.div_s", "7f"), + ("i64.div_u", "80"), + ("i64.rem_s", "81"), + ("i64.rem_u", "82"), + ("i64.and", "83"), + ("i64.or", "84"), + ("i64.xor", "85"), + ("i64.shl", "86"), + ("i64.shr_s", "87"), + ("i64.shr_u", "88"), + ("i64.rotl", "89"), + ("i63.rotr", "8a"), + ("f32.abs", "8b"), + ("f32.neg", "8c"), + ("f32.ceil", "8d"), + ("f32.floor", "8e"), + ("f32.trunc", "8f"), + ("f32.nearest", "90"), + ("f32.sqrt", "91"), + ("f32.add", "92"), + ("f32.sub", "93"), + ("f32.mul", "94"), + ("f32.div", "95"), + ("f32.min", "96"), + ("f32.max", "97"), + ("f32.copysign", "98"), + ("f64.abs", "99"), + ("f64.neg", "9a"), + ("f64.ceil", "9b"), + ("f64.floor", "9c"), + ("f64.trunc", "9d"), + ("f64.nearest", "9e"), + ("f64.sqrt", "9f"), + ("f64.add", "a0"), + ("f64.sub", "a1"), + ("f64.mul", "a2"), + ("f64.div", "a3"), + ("f64.min", "a4"), + ("f64.max", "a5"), + ("f64.copysign", "a6"), + ] num_ops_dict = dict(num_ops) num_ops_dict_rev = {v: k for k, v in num_ops_dict.items()} - conversion = [('i32.wrap/i64', 'a7'), - ('i32.trunc_s/f32', 'a8'), - ('i32.trunc_u/f32', 'a9'), - ('i32.trunc_s/f64', 'aa'), - ('i32.trunc_u/f64', 'ab'), - ('i64.extend_s/i32', 'ac'), - ('i64.extend_u/i32', 'ad'), - ('i64.trunc_s/f32', 'ae'), - ('i64.trunc_u/f32', 'af'), - ('i64.trunc_s/f64', 'b0'), - ('i64.trunc_u/f64', 'b1'), - ('f32.convert_s/i32', 'b2'), - ('f32.convert_u/i32', 'b3'), - ('f32.convert_s/i64', 'b4'), - ('f32.convert_u/i64', 'b5'), - ('f32.demote/f64', 'b6'), - ('f64.convert_s/i32', 'b7'), - ('f64.convert_u/i32', 'b8'), - ('f64.convert_s/i64', 'b9'), - ('f64.convert_u/i64', 'ba'), - ('f64.promote/f32', 'bb')] + conversion = [ + ("i32.wrap/i64", "a7"), + ("i32.trunc_s/f32", "a8"), + ("i32.trunc_u/f32", "a9"), + ("i32.trunc_s/f64", "aa"), + ("i32.trunc_u/f64", "ab"), + ("i64.extend_s/i32", "ac"), + ("i64.extend_u/i32", "ad"), + ("i64.trunc_s/f32", "ae"), + ("i64.trunc_u/f32", "af"), + ("i64.trunc_s/f64", "b0"), + ("i64.trunc_u/f64", "b1"), + ("f32.convert_s/i32", "b2"), + ("f32.convert_u/i32", "b3"), + ("f32.convert_s/i64", "b4"), + ("f32.convert_u/i64", "b5"), + ("f32.demote/f64", "b6"), + ("f64.convert_s/i32", "b7"), + ("f64.convert_u/i32", "b8"), + ("f64.convert_s/i64", "b9"), + ("f64.convert_u/i64", "ba"), + ("f64.promote/f32", "bb"), + ] conversion_dict = dict(conversion) conversion_dict_rev = {v: k for k, v in conversion_dict.items()} - reinterpretations = [('i32.reinterpret/f32', 'bc'), - ('i64.reinterpret/f64', 'bd'), - ('f32.reinterpret/i32', 'be'), - ('f64.reinterpret/i64', 'bf')] + reinterpretations = [ + ("i32.reinterpret/f32", "bc"), + ("i64.reinterpret/f64", "bd"), + ("f32.reinterpret/i32", "be"), + ("f64.reinterpret/i64", "bf"), + ] reinterpretations_dict = dict(reinterpretations) - reinterpretations_dict_rev = {v: k for k, - v in reinterpretations_dict.items()} + reinterpretations_dict_rev = { + v: k for k, v in reinterpretations_dict.items() + } - section_code = [('type', '01'), ('import', '02'), - ('function', '03'), ('table', '04'), - ('memory', '05'), ('global', '06'), - ('export', '07'), ('start', '08'), - ('element', '09'), ('code', '0a'), - ('data', '0b'), ('custom', '00')] + section_code = [ + ("type", "01"), + ("import", "02"), + ("function", "03"), + ("table", "04"), + ("memory", "05"), + ("global", "06"), + ("export", "07"), + ("start", "08"), + ("element", "09"), + ("code", "0a"), + ("data", "0b"), + ("custom", "00"), + ] section_code_dict = dict(section_code) section_code_dict_rev = {v: k for k, v in section_code_dict.items()} |