Skip to content

Commit

Permalink
Fix is_slowpath_instruction
Browse files Browse the repository at this point in the history
  • Loading branch information
mohanson committed Feb 24, 2023
1 parent f786b6b commit 1653cd0
Show file tree
Hide file tree
Showing 5 changed files with 138 additions and 130 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "ckb-vm"
description = "CKB's Virtual machine"
version = "0.23.1"
version = "0.23.2"
license = "MIT"
authors = ["Nervos Core Dev <dev@nervos.org>"]
edition = "2021"
Expand All @@ -27,7 +27,7 @@ goblin_v023 = { package = "goblin", version = "=0.2.3" }
goblin_v040 = { package = "goblin", version = "=0.4.0" }
scroll = "0.10"
serde = { version = "1.0", features = ["derive"] }
ckb-vm-definitions = { path = "definitions", version = "=0.23.1" }
ckb-vm-definitions = { path = "definitions", version = "=0.23.2" }
derive_more = "0.99.2"
rand = "0.7.3"

Expand Down
2 changes: 1 addition & 1 deletion definitions/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "ckb-vm-definitions"
description = "Common definition files for CKB VM"
version = "0.23.1"
version = "0.23.2"
license = "MIT"
authors = ["Nervos Core Dev <dev@nervos.org>"]
edition = "2021"
Expand Down
13 changes: 10 additions & 3 deletions definitions/src/generate_asm_constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ use ckb_vm_definitions::{
RET_ECALL, RET_INVALID_PERMISSION, RET_MAX_CYCLES_EXCEEDED, RET_OUT_OF_BOUND, RET_SLOWPATH,
TRACE_ITEM_LENGTH,
},
instructions::{Instruction, INSTRUCTION_OPCODE_NAMES},
instructions::{
instruction_opcode_name, Instruction, INSTRUCTION_OPCODE_NAMES, MAXIMUM_OPCODE,
MINIMAL_OPCODE,
},
memory::{FLAG_DIRTY, FLAG_EXECUTABLE, FLAG_FREEZED, FLAG_WRITABLE, FLAG_WXORX_BIT},
registers::{RA, SP},
MEMORY_FRAMES, MEMORY_FRAMESIZE, MEMORY_FRAME_PAGE_SHIFTS, MEMORY_FRAME_SHIFTS,
Expand Down Expand Up @@ -162,8 +165,12 @@ fn main() {
);
println!();

for (op, name) in INSTRUCTION_OPCODE_NAMES.iter().enumerate() {
println!("#define CKB_VM_ASM_OP_{} {}", name, op);
for op in MINIMAL_OPCODE..MAXIMUM_OPCODE {
println!(
"#define CKB_VM_ASM_OP_{} {}",
instruction_opcode_name(op),
op
);
}
println!();

Expand Down
6 changes: 4 additions & 2 deletions src/instructions/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ pub mod tagged;
pub use self::register::Register;
use super::Error;
pub use ckb_vm_definitions::{
instructions::{self as insts, instruction_opcode_name, Instruction, InstructionOpcode},
instructions::{
self as insts, instruction_opcode_name, Instruction, InstructionOpcode, MINIMAL_OPCODE,
},
registers::REGISTER_ABI_NAMES,
};
use core::fmt;
Expand Down Expand Up @@ -340,7 +342,7 @@ impl fmt::Display for R4type {
}

pub fn is_slowpath_instruction(i: Instruction) -> bool {
i as u8 >= 0xF0
(i as u8 as u16) < MINIMAL_OPCODE
}

pub fn is_basic_block_end_instruction(i: Instruction) -> bool {
Expand Down
243 changes: 121 additions & 122 deletions src/machine/asm/cdefinitions_generated.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,128 +49,127 @@
#define CKB_VM_ASM_ASM_CORE_MACHINE_OFFSET_TRACES 4195656
#define CKB_VM_ASM_ASM_CORE_MACHINE_OFFSET_FRAMES 4195640

#define CKB_VM_ASM_OP_UNLOADED 0
#define CKB_VM_ASM_OP_ADD 1
#define CKB_VM_ASM_OP_ADDI 2
#define CKB_VM_ASM_OP_ADDIW 3
#define CKB_VM_ASM_OP_ADDW 4
#define CKB_VM_ASM_OP_AND 5
#define CKB_VM_ASM_OP_ANDI 6
#define CKB_VM_ASM_OP_AUIPC 7
#define CKB_VM_ASM_OP_BEQ 8
#define CKB_VM_ASM_OP_BGE 9
#define CKB_VM_ASM_OP_BGEU 10
#define CKB_VM_ASM_OP_BLT 11
#define CKB_VM_ASM_OP_BLTU 12
#define CKB_VM_ASM_OP_BNE 13
#define CKB_VM_ASM_OP_DIV 14
#define CKB_VM_ASM_OP_DIVU 15
#define CKB_VM_ASM_OP_DIVUW 16
#define CKB_VM_ASM_OP_DIVW 17
#define CKB_VM_ASM_OP_EBREAK 18
#define CKB_VM_ASM_OP_ECALL 19
#define CKB_VM_ASM_OP_FENCE 20
#define CKB_VM_ASM_OP_FENCEI 21
#define CKB_VM_ASM_OP_JAL 22
#define CKB_VM_ASM_OP_JALR 23
#define CKB_VM_ASM_OP_LB 24
#define CKB_VM_ASM_OP_LBU 25
#define CKB_VM_ASM_OP_LD 26
#define CKB_VM_ASM_OP_LH 27
#define CKB_VM_ASM_OP_LHU 28
#define CKB_VM_ASM_OP_LUI 29
#define CKB_VM_ASM_OP_LW 30
#define CKB_VM_ASM_OP_LWU 31
#define CKB_VM_ASM_OP_MUL 32
#define CKB_VM_ASM_OP_MULH 33
#define CKB_VM_ASM_OP_MULHSU 34
#define CKB_VM_ASM_OP_MULHU 35
#define CKB_VM_ASM_OP_MULW 36
#define CKB_VM_ASM_OP_OR 37
#define CKB_VM_ASM_OP_ORI 38
#define CKB_VM_ASM_OP_REM 39
#define CKB_VM_ASM_OP_REMU 40
#define CKB_VM_ASM_OP_REMUW 41
#define CKB_VM_ASM_OP_REMW 42
#define CKB_VM_ASM_OP_SB 43
#define CKB_VM_ASM_OP_SD 44
#define CKB_VM_ASM_OP_SH 45
#define CKB_VM_ASM_OP_SLL 46
#define CKB_VM_ASM_OP_SLLI 47
#define CKB_VM_ASM_OP_SLLIW 48
#define CKB_VM_ASM_OP_SLLW 49
#define CKB_VM_ASM_OP_SLT 50
#define CKB_VM_ASM_OP_SLTI 51
#define CKB_VM_ASM_OP_SLTIU 52
#define CKB_VM_ASM_OP_SLTU 53
#define CKB_VM_ASM_OP_SRA 54
#define CKB_VM_ASM_OP_SRAI 55
#define CKB_VM_ASM_OP_SRAIW 56
#define CKB_VM_ASM_OP_SRAW 57
#define CKB_VM_ASM_OP_SRL 58
#define CKB_VM_ASM_OP_SRLI 59
#define CKB_VM_ASM_OP_SRLIW 60
#define CKB_VM_ASM_OP_SRLW 61
#define CKB_VM_ASM_OP_SUB 62
#define CKB_VM_ASM_OP_SUBW 63
#define CKB_VM_ASM_OP_SW 64
#define CKB_VM_ASM_OP_XOR 65
#define CKB_VM_ASM_OP_XORI 66
#define CKB_VM_ASM_OP_ADDUW 67
#define CKB_VM_ASM_OP_ANDN 68
#define CKB_VM_ASM_OP_BCLR 69
#define CKB_VM_ASM_OP_BCLRI 70
#define CKB_VM_ASM_OP_BEXT 71
#define CKB_VM_ASM_OP_BEXTI 72
#define CKB_VM_ASM_OP_BINV 73
#define CKB_VM_ASM_OP_BINVI 74
#define CKB_VM_ASM_OP_BSET 75
#define CKB_VM_ASM_OP_BSETI 76
#define CKB_VM_ASM_OP_CLMUL 77
#define CKB_VM_ASM_OP_CLMULH 78
#define CKB_VM_ASM_OP_CLMULR 79
#define CKB_VM_ASM_OP_CLZ 80
#define CKB_VM_ASM_OP_CLZW 81
#define CKB_VM_ASM_OP_CPOP 82
#define CKB_VM_ASM_OP_CPOPW 83
#define CKB_VM_ASM_OP_CTZ 84
#define CKB_VM_ASM_OP_CTZW 85
#define CKB_VM_ASM_OP_MAX 86
#define CKB_VM_ASM_OP_MAXU 87
#define CKB_VM_ASM_OP_MIN 88
#define CKB_VM_ASM_OP_MINU 89
#define CKB_VM_ASM_OP_ORCB 90
#define CKB_VM_ASM_OP_ORN 91
#define CKB_VM_ASM_OP_REV8 92
#define CKB_VM_ASM_OP_ROL 93
#define CKB_VM_ASM_OP_ROLW 94
#define CKB_VM_ASM_OP_ROR 95
#define CKB_VM_ASM_OP_RORI 96
#define CKB_VM_ASM_OP_RORIW 97
#define CKB_VM_ASM_OP_RORW 98
#define CKB_VM_ASM_OP_SEXTB 99
#define CKB_VM_ASM_OP_SEXTH 100
#define CKB_VM_ASM_OP_SH1ADD 101
#define CKB_VM_ASM_OP_SH1ADDUW 102
#define CKB_VM_ASM_OP_SH2ADD 103
#define CKB_VM_ASM_OP_SH2ADDUW 104
#define CKB_VM_ASM_OP_SH3ADD 105
#define CKB_VM_ASM_OP_SH3ADDUW 106
#define CKB_VM_ASM_OP_SLLIUW 107
#define CKB_VM_ASM_OP_XNOR 108
#define CKB_VM_ASM_OP_ZEXTH 109
#define CKB_VM_ASM_OP_WIDE_MUL 110
#define CKB_VM_ASM_OP_WIDE_MULU 111
#define CKB_VM_ASM_OP_WIDE_MULSU 112
#define CKB_VM_ASM_OP_WIDE_DIV 113
#define CKB_VM_ASM_OP_WIDE_DIVU 114
#define CKB_VM_ASM_OP_FAR_JUMP_REL 115
#define CKB_VM_ASM_OP_FAR_JUMP_ABS 116
#define CKB_VM_ASM_OP_ADC 117
#define CKB_VM_ASM_OP_SBB 118
#define CKB_VM_ASM_OP_CUSTOM_LOAD_UIMM 119
#define CKB_VM_ASM_OP_CUSTOM_LOAD_IMM 120
#define CKB_VM_ASM_OP_CUSTOM_TRACE_END 121
#define CKB_VM_ASM_OP_UNLOADED 16
#define CKB_VM_ASM_OP_ADD 17
#define CKB_VM_ASM_OP_ADDI 18
#define CKB_VM_ASM_OP_ADDIW 19
#define CKB_VM_ASM_OP_ADDW 20
#define CKB_VM_ASM_OP_AND 21
#define CKB_VM_ASM_OP_ANDI 22
#define CKB_VM_ASM_OP_AUIPC 23
#define CKB_VM_ASM_OP_BEQ 24
#define CKB_VM_ASM_OP_BGE 25
#define CKB_VM_ASM_OP_BGEU 26
#define CKB_VM_ASM_OP_BLT 27
#define CKB_VM_ASM_OP_BLTU 28
#define CKB_VM_ASM_OP_BNE 29
#define CKB_VM_ASM_OP_DIV 30
#define CKB_VM_ASM_OP_DIVU 31
#define CKB_VM_ASM_OP_DIVUW 32
#define CKB_VM_ASM_OP_DIVW 33
#define CKB_VM_ASM_OP_EBREAK 34
#define CKB_VM_ASM_OP_ECALL 35
#define CKB_VM_ASM_OP_FENCE 36
#define CKB_VM_ASM_OP_FENCEI 37
#define CKB_VM_ASM_OP_JAL 38
#define CKB_VM_ASM_OP_JALR 39
#define CKB_VM_ASM_OP_LB 40
#define CKB_VM_ASM_OP_LBU 41
#define CKB_VM_ASM_OP_LD 42
#define CKB_VM_ASM_OP_LH 43
#define CKB_VM_ASM_OP_LHU 44
#define CKB_VM_ASM_OP_LUI 45
#define CKB_VM_ASM_OP_LW 46
#define CKB_VM_ASM_OP_LWU 47
#define CKB_VM_ASM_OP_MUL 48
#define CKB_VM_ASM_OP_MULH 49
#define CKB_VM_ASM_OP_MULHSU 50
#define CKB_VM_ASM_OP_MULHU 51
#define CKB_VM_ASM_OP_MULW 52
#define CKB_VM_ASM_OP_OR 53
#define CKB_VM_ASM_OP_ORI 54
#define CKB_VM_ASM_OP_REM 55
#define CKB_VM_ASM_OP_REMU 56
#define CKB_VM_ASM_OP_REMUW 57
#define CKB_VM_ASM_OP_REMW 58
#define CKB_VM_ASM_OP_SB 59
#define CKB_VM_ASM_OP_SD 60
#define CKB_VM_ASM_OP_SH 61
#define CKB_VM_ASM_OP_SLL 62
#define CKB_VM_ASM_OP_SLLI 63
#define CKB_VM_ASM_OP_SLLIW 64
#define CKB_VM_ASM_OP_SLLW 65
#define CKB_VM_ASM_OP_SLT 66
#define CKB_VM_ASM_OP_SLTI 67
#define CKB_VM_ASM_OP_SLTIU 68
#define CKB_VM_ASM_OP_SLTU 69
#define CKB_VM_ASM_OP_SRA 70
#define CKB_VM_ASM_OP_SRAI 71
#define CKB_VM_ASM_OP_SRAIW 72
#define CKB_VM_ASM_OP_SRAW 73
#define CKB_VM_ASM_OP_SRL 74
#define CKB_VM_ASM_OP_SRLI 75
#define CKB_VM_ASM_OP_SRLIW 76
#define CKB_VM_ASM_OP_SRLW 77
#define CKB_VM_ASM_OP_SUB 78
#define CKB_VM_ASM_OP_SUBW 79
#define CKB_VM_ASM_OP_SW 80
#define CKB_VM_ASM_OP_XOR 81
#define CKB_VM_ASM_OP_XORI 82
#define CKB_VM_ASM_OP_ADDUW 83
#define CKB_VM_ASM_OP_ANDN 84
#define CKB_VM_ASM_OP_BCLR 85
#define CKB_VM_ASM_OP_BCLRI 86
#define CKB_VM_ASM_OP_BEXT 87
#define CKB_VM_ASM_OP_BEXTI 88
#define CKB_VM_ASM_OP_BINV 89
#define CKB_VM_ASM_OP_BINVI 90
#define CKB_VM_ASM_OP_BSET 91
#define CKB_VM_ASM_OP_BSETI 92
#define CKB_VM_ASM_OP_CLMUL 93
#define CKB_VM_ASM_OP_CLMULH 94
#define CKB_VM_ASM_OP_CLMULR 95
#define CKB_VM_ASM_OP_CLZ 96
#define CKB_VM_ASM_OP_CLZW 97
#define CKB_VM_ASM_OP_CPOP 98
#define CKB_VM_ASM_OP_CPOPW 99
#define CKB_VM_ASM_OP_CTZ 100
#define CKB_VM_ASM_OP_CTZW 101
#define CKB_VM_ASM_OP_MAX 102
#define CKB_VM_ASM_OP_MAXU 103
#define CKB_VM_ASM_OP_MIN 104
#define CKB_VM_ASM_OP_MINU 105
#define CKB_VM_ASM_OP_ORCB 106
#define CKB_VM_ASM_OP_ORN 107
#define CKB_VM_ASM_OP_REV8 108
#define CKB_VM_ASM_OP_ROL 109
#define CKB_VM_ASM_OP_ROLW 110
#define CKB_VM_ASM_OP_ROR 111
#define CKB_VM_ASM_OP_RORI 112
#define CKB_VM_ASM_OP_RORIW 113
#define CKB_VM_ASM_OP_RORW 114
#define CKB_VM_ASM_OP_SEXTB 115
#define CKB_VM_ASM_OP_SEXTH 116
#define CKB_VM_ASM_OP_SH1ADD 117
#define CKB_VM_ASM_OP_SH1ADDUW 118
#define CKB_VM_ASM_OP_SH2ADD 119
#define CKB_VM_ASM_OP_SH2ADDUW 120
#define CKB_VM_ASM_OP_SH3ADD 121
#define CKB_VM_ASM_OP_SH3ADDUW 122
#define CKB_VM_ASM_OP_SLLIUW 123
#define CKB_VM_ASM_OP_XNOR 124
#define CKB_VM_ASM_OP_ZEXTH 125
#define CKB_VM_ASM_OP_WIDE_MUL 126
#define CKB_VM_ASM_OP_WIDE_MULU 127
#define CKB_VM_ASM_OP_WIDE_MULSU 128
#define CKB_VM_ASM_OP_WIDE_DIV 129
#define CKB_VM_ASM_OP_WIDE_DIVU 130
#define CKB_VM_ASM_OP_FAR_JUMP_REL 131
#define CKB_VM_ASM_OP_FAR_JUMP_ABS 132
#define CKB_VM_ASM_OP_ADC 133
#define CKB_VM_ASM_OP_SBB 134
#define CKB_VM_ASM_OP_CUSTOM_LOAD_UIMM 135
#define CKB_VM_ASM_OP_CUSTOM_LOAD_IMM 136

#ifdef CKB_VM_ASM_GENERATE_LABEL_TABLES
#ifdef __APPLE__
Expand Down

0 comments on commit 1653cd0

Please sign in to comment.