@aztec/simulator 0.53.0 → 0.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/avm/avm_execution_environment.d.ts +2 -2
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +5 -6
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +73 -35
- package/dest/avm/avm_memory_types.d.ts +1 -1
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +5 -3
- package/dest/avm/bytecode_utils.js +5 -5
- package/dest/avm/opcodes/arithmetic.d.ts +9 -16
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/avm/opcodes/arithmetic.js +12 -37
- package/dest/avm/opcodes/bitwise.d.ts +5 -5
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +6 -6
- package/dest/avm/opcodes/comparators.d.ts +3 -3
- package/dest/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/avm/opcodes/comparators.js +4 -4
- package/dest/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/avm/opcodes/control_flow.js +6 -6
- package/dest/avm/opcodes/instruction.d.ts +18 -12
- package/dest/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction.js +36 -19
- package/dest/avm/opcodes/instruction_impl.d.ts +4 -2
- package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction_impl.js +15 -7
- package/dest/avm/opcodes/memory.d.ts +8 -9
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +59 -59
- package/dest/avm/serialization/bytecode_serialization.d.ts +7 -8
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +83 -63
- package/dest/avm/serialization/instruction_serialization.d.ts +84 -64
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +102 -67
- package/dest/public/hints_builder.d.ts +3 -4
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +2 -5
- package/dest/public/tail_phase_manager.d.ts.map +1 -1
- package/dest/public/tail_phase_manager.js +2 -3
- package/package.json +9 -9
- package/src/avm/avm_execution_environment.ts +3 -4
- package/src/avm/avm_gas.ts +72 -34
- package/src/avm/avm_memory_types.ts +4 -2
- package/src/avm/bytecode_utils.ts +4 -4
- package/src/avm/opcodes/arithmetic.ts +12 -41
- package/src/avm/opcodes/bitwise.ts +5 -5
- package/src/avm/opcodes/comparators.ts +3 -3
- package/src/avm/opcodes/control_flow.ts +5 -5
- package/src/avm/opcodes/instruction.ts +41 -19
- package/src/avm/opcodes/instruction_impl.ts +14 -6
- package/src/avm/opcodes/memory.ts +60 -66
- package/src/avm/serialization/bytecode_serialization.ts +93 -73
- package/src/avm/serialization/instruction_serialization.ts +58 -21
- package/src/public/hints_builder.ts +0 -11
- package/src/public/tail_phase_manager.ts +0 -7
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
1
|
+
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
3
2
|
import { Addressing } from './addressing_mode.js';
|
|
4
|
-
import { Instruction } from './instruction.js';
|
|
5
3
|
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
6
4
|
export class ThreeOperandArithmeticInstruction extends ThreeOperandInstruction {
|
|
7
5
|
async execute(context) {
|
|
@@ -24,58 +22,35 @@ export class Add extends ThreeOperandArithmeticInstruction {
|
|
|
24
22
|
}
|
|
25
23
|
}
|
|
26
24
|
Add.type = 'ADD';
|
|
27
|
-
Add.opcode = Opcode.
|
|
25
|
+
Add.opcode = Opcode.ADD_8; // FIXME: needed for gas.
|
|
28
26
|
export class Sub extends ThreeOperandArithmeticInstruction {
|
|
29
27
|
compute(a, b) {
|
|
30
28
|
return a.sub(b);
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
31
|
Sub.type = 'SUB';
|
|
34
|
-
Sub.opcode = Opcode.
|
|
32
|
+
Sub.opcode = Opcode.SUB_8; // FIXME: needed for gas.
|
|
35
33
|
export class Mul extends ThreeOperandArithmeticInstruction {
|
|
36
34
|
compute(a, b) {
|
|
37
35
|
return a.mul(b);
|
|
38
36
|
}
|
|
39
37
|
}
|
|
40
38
|
Mul.type = 'MUL';
|
|
41
|
-
Mul.opcode = Opcode.
|
|
39
|
+
Mul.opcode = Opcode.MUL_8; // FIXME: needed for gas.
|
|
42
40
|
export class Div extends ThreeOperandArithmeticInstruction {
|
|
43
41
|
compute(a, b) {
|
|
44
42
|
return a.div(b);
|
|
45
43
|
}
|
|
46
44
|
}
|
|
47
45
|
Div.type = 'DIV';
|
|
48
|
-
Div.opcode = Opcode.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
this.bOffset = bOffset;
|
|
55
|
-
this.dstOffset = dstOffset;
|
|
56
|
-
}
|
|
57
|
-
async execute(context) {
|
|
58
|
-
const memoryOperations = { reads: 2, writes: 1, indirect: this.indirect };
|
|
59
|
-
const memory = context.machineState.memory.track(this.type);
|
|
60
|
-
context.machineState.consumeGas(this.gasCost(memoryOperations));
|
|
61
|
-
const [aOffset, bOffset, dstOffset] = Addressing.fromWire(this.indirect).resolve([this.aOffset, this.bOffset, this.dstOffset], memory);
|
|
62
|
-
memory.checkTags(TypeTag.FIELD, aOffset, bOffset);
|
|
63
|
-
const a = memory.getAs(aOffset);
|
|
64
|
-
const b = memory.getAs(bOffset);
|
|
65
|
-
const dest = a.fdiv(b);
|
|
66
|
-
memory.set(dstOffset, dest);
|
|
67
|
-
memory.assert(memoryOperations);
|
|
68
|
-
context.machineState.incrementPc();
|
|
46
|
+
Div.opcode = Opcode.DIV_8; // FIXME: needed for gas.
|
|
47
|
+
// TODO: This class now temporarily has a tag, until all tags are removed.
|
|
48
|
+
export class FieldDiv extends ThreeOperandArithmeticInstruction {
|
|
49
|
+
compute(a, b) {
|
|
50
|
+
// return (a as Field).fdiv(b as Field);
|
|
51
|
+
return a.fdiv(b);
|
|
69
52
|
}
|
|
70
53
|
}
|
|
71
54
|
FieldDiv.type = 'FDIV';
|
|
72
|
-
FieldDiv.opcode = Opcode.
|
|
73
|
-
|
|
74
|
-
FieldDiv.wireFormat = [
|
|
75
|
-
OperandType.UINT8,
|
|
76
|
-
OperandType.UINT8,
|
|
77
|
-
OperandType.UINT32,
|
|
78
|
-
OperandType.UINT32,
|
|
79
|
-
OperandType.UINT32,
|
|
80
|
-
];
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpdGhtZXRpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9hcml0aG1ldGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZ0MsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhFLE1BQU0sT0FBZ0IsaUNBQWtDLFNBQVEsdUJBQXVCO0lBQzlFLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFaEUsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUM5RSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQzVDLE1BQU0sQ0FDUCxDQUFDO1FBQ0YsTUFBTSxDQUFDLFNB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
|
|
55
|
+
FieldDiv.opcode = Opcode.FDIV_8; // FIXME: needed for gas.
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpdGhtZXRpYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9hcml0aG1ldGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEUsTUFBTSxPQUFnQixpQ0FBa0MsU0FBUSx1QkFBdUI7SUFDOUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQjtRQUN0QyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUVoRSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQzlFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDNUMsTUFBTSxDQUNQLENBQUM7UUFDRixNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRS9DLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU1QixNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEMsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBR0Y7QUFFRCxNQUFNLE9BQU8sR0FBSSxTQUFRLGlDQUFpQztJQUk5QyxPQUFPLENBQUMsQ0FBYyxFQUFFLENBQWM7UUFDOUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7O0FBTGUsUUFBSSxHQUFXLEtBQUssQ0FBQztBQUNyQixVQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLHlCQUF5QjtBQU9sRSxNQUFNLE9BQU8sR0FBSSxTQUFRLGlDQUFpQztJQUk5QyxPQUFPLENBQUMsQ0FBYyxFQUFFLENBQWM7UUFDOUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7O0FBTGUsUUFBSSxHQUFXLEtBQUssQ0FBQztBQUNyQixVQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLHlCQUF5QjtBQU9sRSxNQUFNLE9BQU8sR0FBSSxTQUFRLGlDQUFpQztJQUk5QyxPQUFPLENBQUMsQ0FBYyxFQUFFLENBQWM7UUFDOUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7O0FBTE0sUUFBSSxHQUFXLEtBQUssQ0FBQztBQUNaLFVBQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMseUJBQXlCO0FBT2xFLE1BQU0sT0FBTyxHQUFJLFNBQVEsaUNBQWlDO0lBSTlDLE9BQU8sQ0FBQyxDQUFjLEVBQUUsQ0FBYztRQUM5QyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQzs7QUFMTSxRQUFJLEdBQVcsS0FBSyxDQUFDO0FBQ1osVUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyx5QkFBeUI7QUFPbEUsMEVBQTBFO0FBQzFFLE1BQU0sT0FBTyxRQUFTLFNBQVEsaUNBQWlDO0lBSW5ELE9BQU8sQ0FBQyxDQUFRLEVBQUUsQ0FBUTtRQUNsQyx3Q0FBd0M7UUFDeEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7O0FBTk0sYUFBSSxHQUFXLE1BQU0sQ0FBQztBQUNiLGVBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMseUJBQXlCIn0=
|
|
@@ -9,28 +9,28 @@ declare abstract class ThreeOperandBitwiseInstruction extends ThreeOperandInstru
|
|
|
9
9
|
}
|
|
10
10
|
export declare class And extends ThreeOperandBitwiseInstruction {
|
|
11
11
|
static readonly type: string;
|
|
12
|
-
static readonly opcode = Opcode.
|
|
12
|
+
static readonly opcode = Opcode.AND_8;
|
|
13
13
|
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
14
14
|
}
|
|
15
15
|
export declare class Or extends ThreeOperandBitwiseInstruction {
|
|
16
16
|
static readonly type: string;
|
|
17
|
-
static readonly opcode = Opcode.
|
|
17
|
+
static readonly opcode = Opcode.OR_8;
|
|
18
18
|
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
19
19
|
}
|
|
20
20
|
export declare class Xor extends ThreeOperandBitwiseInstruction {
|
|
21
21
|
static readonly type: string;
|
|
22
|
-
static readonly opcode = Opcode.
|
|
22
|
+
static readonly opcode = Opcode.XOR_8;
|
|
23
23
|
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
24
24
|
}
|
|
25
25
|
export declare class Shl extends ThreeOperandBitwiseInstruction {
|
|
26
26
|
static readonly type: string;
|
|
27
|
-
static readonly opcode = Opcode.
|
|
27
|
+
static readonly opcode = Opcode.SHL_8;
|
|
28
28
|
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
29
29
|
protected checkTags(memory: TaggedMemoryInterface, inTag: number, aOffset: number, bOffset: number): void;
|
|
30
30
|
}
|
|
31
31
|
export declare class Shr extends ThreeOperandBitwiseInstruction {
|
|
32
32
|
static readonly type: string;
|
|
33
|
-
static readonly opcode = Opcode.
|
|
33
|
+
static readonly opcode = Opcode.SHR_8;
|
|
34
34
|
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
35
35
|
protected checkTags(memory: TaggedMemoryInterface, inTag: number, aOffset: number, bOffset: number): void;
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitwise.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/bitwise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,qBAAqB,EAAW,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,uBAAe,8BAA+B,SAAQ,uBAAuB;IAC9D,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;IAC7E,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGnG;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"bitwise.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/bitwise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,qBAAqB,EAAW,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,uBAAe,8BAA+B,SAAQ,uBAAuB;IAC9D,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;IAC7E,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGnG;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAG9E;AAED,qBAAa,EAAG,SAAQ,8BAA8B;IACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,eAAe;cAElB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAG9E;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAG9E;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAG1D,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI5G;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAG1D,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI5G;AAED,qBAAa,GAAI,SAAQ,qBAAqB;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc;gBAExB,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAIlE,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAezD"}
|
|
@@ -26,21 +26,21 @@ export class And extends ThreeOperandBitwiseInstruction {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
And.type = 'AND';
|
|
29
|
-
And.opcode = Opcode.
|
|
29
|
+
And.opcode = Opcode.AND_8; // FIXME: needed for gas.
|
|
30
30
|
export class Or extends ThreeOperandBitwiseInstruction {
|
|
31
31
|
compute(a, b) {
|
|
32
32
|
return a.or(b);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
Or.type = 'OR';
|
|
36
|
-
Or.opcode = Opcode.
|
|
36
|
+
Or.opcode = Opcode.OR_8; // FIXME: needed for gas.
|
|
37
37
|
export class Xor extends ThreeOperandBitwiseInstruction {
|
|
38
38
|
compute(a, b) {
|
|
39
39
|
return a.xor(b);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
Xor.type = 'XOR';
|
|
43
|
-
Xor.opcode = Opcode.
|
|
43
|
+
Xor.opcode = Opcode.XOR_8; // FIXME: needed for gas.
|
|
44
44
|
export class Shl extends ThreeOperandBitwiseInstruction {
|
|
45
45
|
compute(a, b) {
|
|
46
46
|
return a.shl(b);
|
|
@@ -51,7 +51,7 @@ export class Shl extends ThreeOperandBitwiseInstruction {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
Shl.type = 'SHL';
|
|
54
|
-
Shl.opcode = Opcode.
|
|
54
|
+
Shl.opcode = Opcode.SHL_8; // FIXME: needed for gas.
|
|
55
55
|
export class Shr extends ThreeOperandBitwiseInstruction {
|
|
56
56
|
compute(a, b) {
|
|
57
57
|
return a.shr(b);
|
|
@@ -62,7 +62,7 @@ export class Shr extends ThreeOperandBitwiseInstruction {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
Shr.type = 'SHR';
|
|
65
|
-
Shr.opcode = Opcode.
|
|
65
|
+
Shr.opcode = Opcode.SHR_8; // FIXME: needed for gas.
|
|
66
66
|
export class Not extends TwoOperandInstruction {
|
|
67
67
|
constructor(indirect, inTag, aOffset, dstOffset) {
|
|
68
68
|
super(indirect, inTag, aOffset, dstOffset);
|
|
@@ -82,4 +82,4 @@ export class Not extends TwoOperandInstruction {
|
|
|
82
82
|
}
|
|
83
83
|
Not.type = 'NOT';
|
|
84
84
|
Not.opcode = Opcode.NOT;
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0d2lzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9iaXR3aXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0QsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixNQUFlLDhCQUErQixTQUFRLHVCQUF1QjtJQUNwRSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQW1CO1FBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FDOUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUM1QyxNQUFNLENBQ1AsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8s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
|
|
@@ -8,17 +8,17 @@ declare abstract class ComparatorInstruction extends ThreeOperandInstruction {
|
|
|
8
8
|
}
|
|
9
9
|
export declare class Eq extends ComparatorInstruction {
|
|
10
10
|
static readonly type: string;
|
|
11
|
-
static readonly opcode = Opcode.
|
|
11
|
+
static readonly opcode = Opcode.EQ_8;
|
|
12
12
|
protected compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
13
13
|
}
|
|
14
14
|
export declare class Lt extends ComparatorInstruction {
|
|
15
15
|
static readonly type: string;
|
|
16
|
-
static readonly opcode = Opcode.
|
|
16
|
+
static readonly opcode = Opcode.LT_8;
|
|
17
17
|
protected compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
18
18
|
}
|
|
19
19
|
export declare class Lte extends ComparatorInstruction {
|
|
20
20
|
static readonly type: string;
|
|
21
|
-
static readonly opcode = Opcode.
|
|
21
|
+
static readonly opcode = Opcode.LTE_8;
|
|
22
22
|
protected compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
23
23
|
}
|
|
24
24
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comparators.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/comparators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,uBAAe,qBAAsB,SAAQ,uBAAuB;IACrD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CACpE;AAED,qBAAa,EAAG,SAAQ,qBAAqB;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"comparators.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/comparators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,uBAAe,qBAAsB,SAAQ,uBAAuB;IACrD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CACpE;AAED,qBAAa,EAAG,SAAQ,qBAAqB;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,eAAe;IAErC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CAG3D;AAED,qBAAa,EAAG,SAAQ,qBAAqB;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,eAAe;IAErC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CAG3D;AAED,qBAAa,GAAI,SAAQ,qBAAqB;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO;CAG3D"}
|
|
@@ -23,19 +23,19 @@ export class Eq extends ComparatorInstruction {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
Eq.type = 'EQ';
|
|
26
|
-
Eq.opcode = Opcode.
|
|
26
|
+
Eq.opcode = Opcode.EQ_8; // FIXME: needed for gas.
|
|
27
27
|
export class Lt extends ComparatorInstruction {
|
|
28
28
|
compare(a, b) {
|
|
29
29
|
return a.lt(b);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
Lt.type = 'LT';
|
|
33
|
-
Lt.opcode = Opcode.
|
|
33
|
+
Lt.opcode = Opcode.LT_8; // FIXME: needed for gas.
|
|
34
34
|
export class Lte extends ComparatorInstruction {
|
|
35
35
|
compare(a, b) {
|
|
36
36
|
return a.lt(b) || a.equals(b);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
Lte.type = 'LTE';
|
|
40
|
-
Lte.opcode = Opcode.
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
Lte.opcode = Opcode.LTE_8; // FIXME: needed for gas.
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvY29tcGFyYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFvQixLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhFLE1BQWUscUJBQXNCLFNBQVEsdUJBQXVCO0lBQzNELEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFaEUsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUM5RSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQzVDLE1BQU0sQ0FDUCxDQUFDO1FBQ0YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUvQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUdGO0FBRUQsTUFBTSxPQUFPLEVBQUcsU0FBUSxxQkFBcUI7SUFJakMsT0FBTyxDQUFDLENBQWMsRUFBRSxDQUFjO1FBQzlDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDOztBQUxlLE9BQUksR0FBVyxJQUFJLENBQUM7QUFDcEIsU0FBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyx5QkFBeUI7QUFPakUsTUFBTSxPQUFPLEVBQUcsU0FBUSxxQkFBcUI7SUFJakMsT0FBTyxDQUFDLENBQWMsRUFBRSxDQUFjO1FBQzlDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDOztBQUxlLE9BQUksR0FBVyxJQUFJLENBQUM7QUFDcEIsU0FBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyx5QkFBeUI7QUFPakUsTUFBTSxPQUFPLEdBQUksU0FBUSxxQkFBcUI7SUFJbEMsT0FBTyxDQUFDLENBQWMsRUFBRSxDQUFjO1FBQzlDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O0FBTGUsUUFBSSxHQUFXLEtBQUssQ0FBQztBQUNyQixVQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLHlCQUF5QiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control_flow.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/control_flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,IAAK,SAAQ,WAAW;IAMvB,OAAO,CAAC,UAAU;IAL9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAU;IAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"control_flow.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/control_flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,IAAK,SAAQ,WAAW;IAMvB,OAAO,CAAC,UAAU;IAL9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAU;IAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAkB;IAEhD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAA2C;gBAEhE,UAAU,EAAE,MAAM;IAIzB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAOzD;AAED,qBAAa,KAAM,SAAQ,WAAW;IAYxB,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,GAAG;IAAU,OAAO,CAAC,UAAU;IAX7E,MAAM,CAAC,IAAI,EAAE,MAAM,CAAW;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IAGjD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAEkB,QAAQ,EAAE,MAAM,EAAU,GAAG,EAAE,MAAM,EAAU,UAAU,EAAE,MAAM;IAIxE,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBzD;AAED,qBAAa,YAAa,SAAQ,WAAW;IAM/B,OAAO,CAAC,GAAG;IALvB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAuB;IAErD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAA2C;gBAEhE,GAAG,EAAE,MAAM;IAIlB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAQzD;AAED,qBAAa,cAAe,SAAQ,WAAW;IAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAoB;IAChD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAyB;IAEvD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAAuB;;IAMnD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAWzD"}
|
|
@@ -14,9 +14,9 @@ export class Jump extends Instruction {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
Jump.type = 'JUMP';
|
|
17
|
-
Jump.opcode = Opcode.
|
|
17
|
+
Jump.opcode = Opcode.JUMP_16;
|
|
18
18
|
// Informs (de)serialization. See Instruction.deserialize.
|
|
19
|
-
Jump.wireFormat = [OperandType.UINT8, OperandType.
|
|
19
|
+
Jump.wireFormat = [OperandType.UINT8, OperandType.UINT16];
|
|
20
20
|
export class JumpI extends Instruction {
|
|
21
21
|
constructor(indirect, loc, condOffset) {
|
|
22
22
|
super();
|
|
@@ -41,13 +41,13 @@ export class JumpI extends Instruction {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
JumpI.type = 'JUMPI';
|
|
44
|
-
JumpI.opcode = Opcode.
|
|
44
|
+
JumpI.opcode = Opcode.JUMPI_16;
|
|
45
45
|
// Instruction wire format with opcode.
|
|
46
46
|
JumpI.wireFormat = [
|
|
47
47
|
OperandType.UINT8,
|
|
48
48
|
OperandType.UINT8,
|
|
49
|
-
OperandType.
|
|
50
|
-
OperandType.
|
|
49
|
+
OperandType.UINT16,
|
|
50
|
+
OperandType.UINT16,
|
|
51
51
|
];
|
|
52
52
|
export class InternalCall extends Instruction {
|
|
53
53
|
constructor(loc) {
|
|
@@ -83,4 +83,4 @@ InternalReturn.type = 'INTERNALRETURN';
|
|
|
83
83
|
InternalReturn.opcode = Opcode.INTERNALRETURN;
|
|
84
84
|
// Informs (de)serialization. See Instruction.deserialize.
|
|
85
85
|
InternalReturn.wireFormat = [OperandType.UINT8];
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbF9mbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2bS9vcGNvZGVzL2NvbnRyb2xfZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxJQUFLLFNBQVEsV0FBVztJQU1uQyxZQUFvQixVQUFrQjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQURVLGVBQVUsR0FBVixVQUFVLENBQVE7SUFFdEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUI7UUFDdEMsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFaEQsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUUxQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQzs7QUFmTSxTQUFJLEdBQVcsTUFBTSxDQUFDO0FBQ2IsV0FBTSxHQUFXLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDaEQsMERBQTBEO0FBQzFDLGVBQVUsR0FBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQWV0RixNQUFNLE9BQU8sS0FBTSxTQUFRLFdBQVc7SUFZcEMsWUFBb0IsUUFBZ0IsRUFBVSxHQUFXLEVBQVUsVUFBa0I7UUFDbkYsS0FBSyxFQUFFLENBQUM7UUFEVSxhQUFRLEdBQVIsUUFBUSxDQUFR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
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import type { AvmContext } from '../avm_context.js';
|
|
3
3
|
import { type MemoryOperations } from '../avm_memory_types.js';
|
|
4
4
|
import { type BufferCursor } from '../serialization/buffer_cursor.js';
|
|
5
|
+
import { type Serializable } from '../serialization/bytecode_serialization.js';
|
|
5
6
|
import { Opcode, type OperandType } from '../serialization/instruction_serialization.js';
|
|
6
7
|
type InstructionConstructor = {
|
|
7
8
|
new (...args: any[]): Instruction;
|
|
8
|
-
wireFormat?: OperandType[];
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
11
|
* Parent class for all AVM instructions.
|
|
@@ -24,21 +24,27 @@ export declare abstract class Instruction {
|
|
|
24
24
|
* @returns Thee string representation.
|
|
25
25
|
*/
|
|
26
26
|
toString(): string;
|
|
27
|
+
static deserialize(this: InstructionConstructor & {
|
|
28
|
+
wireFormat: OperandType[];
|
|
29
|
+
as: any;
|
|
30
|
+
}, buf: BufferCursor | Buffer): Instruction;
|
|
31
|
+
serialize(): Buffer;
|
|
27
32
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* @param
|
|
31
|
-
* @returns The
|
|
33
|
+
* Returns a new instruction instance that can be serialized with the given opcode and wire format.
|
|
34
|
+
* @param opcode The opcode of the instruction.
|
|
35
|
+
* @param wireFormat The wire format of the instruction.
|
|
36
|
+
* @returns The new instruction instance.
|
|
32
37
|
*/
|
|
33
|
-
|
|
38
|
+
as(opcode: Opcode, wireFormat: OperandType[]): Instruction & Serializable;
|
|
34
39
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* @param
|
|
38
|
-
* @
|
|
39
|
-
* @returns Constructed instance of Class.
|
|
40
|
+
* Returns a new instruction class that can be deserialized with the given opcode and wire format.
|
|
41
|
+
* @param opcode The opcode of the instruction.
|
|
42
|
+
* @param wireFormat The wire format of the instruction.
|
|
43
|
+
* @returns The new instruction class.
|
|
40
44
|
*/
|
|
41
|
-
static
|
|
45
|
+
static as(this: InstructionConstructor, wireFormat: OperandType[]): InstructionConstructor & {
|
|
46
|
+
deserialize: (buf: BufferCursor | Buffer) => Instruction;
|
|
47
|
+
};
|
|
42
48
|
/**
|
|
43
49
|
* Computes gas cost for the instruction based on its base cost and memory operations.
|
|
44
50
|
* @param memoryOps Memory operations performed by the instruction.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/instruction.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/instruction.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAA4B,MAAM,+CAA+C,CAAC;AAEnH,KAAK,sBAAsB,GAAG;IAC5B,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,8BAAsB,WAAW;IAC/B;;;;OAIG;aACa,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAE3D;;;;OAIG;IACI,QAAQ,IAAI,MAAM;WAUX,WAAW,CACvB,IAAI,EAAE,sBAAsB,GAAG;QAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QAAC,EAAE,EAAE,GAAG,CAAA;KAAE,EACrE,GAAG,EAAE,YAAY,GAAG,MAAM,GACzB,WAAW;IAKP,SAAS,IAAI,MAAM;IAO1B;;;;;OAKG;IACI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,WAAW,GAAG,YAAY;IAShF;;;;;OAKG;WACW,EAAE,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,WAAW,EAAE;2BAEjD,YAAY,GAAG,MAAM,KAAG,WAAW;;IAQ1D;;;;OAIG;IACH,SAAS,CAAC,OAAO,CAAC,GAAG,GAAE,OAAO,CAAC,gBAAgB,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAM;IAWnG;;;OAGG;IACH,IAAW,IAAI,IAAI,MAAM,CAMxB;IAED;;;OAGG;IACH,IAAW,MAAM,IAAI,MAAM,CAM1B;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { strict as assert } from 'assert';
|
|
2
2
|
import { getBaseGasCost, getDynamicGasCost, mulGas, sumGas } from '../avm_gas.js';
|
|
3
|
-
import { Opcode, deserialize,
|
|
3
|
+
import { Opcode, deserialize, serializeAs } from '../serialization/instruction_serialization.js';
|
|
4
4
|
/**
|
|
5
5
|
* Parent class for all AVM instructions.
|
|
6
6
|
* It's most important aspects are execute and (de)serialize.
|
|
@@ -19,28 +19,45 @@ export class Instruction {
|
|
|
19
19
|
}
|
|
20
20
|
return instructionStr;
|
|
21
21
|
}
|
|
22
|
+
// Default deserialization which uses Class.opcode and Class.wireFormat.
|
|
23
|
+
static deserialize(buf) {
|
|
24
|
+
return this.as(this.wireFormat).deserialize(buf);
|
|
25
|
+
}
|
|
26
|
+
// Default serialization which uses Class.opcode and Class.wireFormat.
|
|
27
|
+
serialize() {
|
|
28
|
+
const klass = this.constructor;
|
|
29
|
+
assert(klass.opcode !== undefined && klass.opcode !== null);
|
|
30
|
+
assert(klass.wireFormat !== undefined && klass.wireFormat !== null);
|
|
31
|
+
return this.as(klass.opcode, klass.wireFormat).serialize();
|
|
32
|
+
}
|
|
22
33
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* @param
|
|
26
|
-
* @returns The
|
|
34
|
+
* Returns a new instruction instance that can be serialized with the given opcode and wire format.
|
|
35
|
+
* @param opcode The opcode of the instruction.
|
|
36
|
+
* @param wireFormat The wire format of the instruction.
|
|
37
|
+
* @returns The new instruction instance.
|
|
27
38
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
as(opcode, wireFormat) {
|
|
40
|
+
return Object.defineProperty(this, 'serialize', {
|
|
41
|
+
value: () => {
|
|
42
|
+
return serializeAs(wireFormat, opcode, this);
|
|
43
|
+
},
|
|
44
|
+
enumerable: false,
|
|
45
|
+
});
|
|
31
46
|
}
|
|
32
47
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* @param
|
|
36
|
-
* @
|
|
37
|
-
* @returns Constructed instance of Class.
|
|
48
|
+
* Returns a new instruction class that can be deserialized with the given opcode and wire format.
|
|
49
|
+
* @param opcode The opcode of the instruction.
|
|
50
|
+
* @param wireFormat The wire format of the instruction.
|
|
51
|
+
* @returns The new instruction class.
|
|
38
52
|
*/
|
|
39
|
-
static
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
53
|
+
static as(wireFormat) {
|
|
54
|
+
return Object.assign(this, {
|
|
55
|
+
deserialize: (buf) => {
|
|
56
|
+
const res = deserialize(buf, wireFormat);
|
|
57
|
+
const args = res.slice(1); // Remove opcode.
|
|
58
|
+
return new this(...args);
|
|
59
|
+
},
|
|
60
|
+
});
|
|
44
61
|
}
|
|
45
62
|
/**
|
|
46
63
|
* Computes gas cost for the instruction based on its base cost and memory operations.
|
|
@@ -80,4 +97,4 @@ export class Instruction {
|
|
|
80
97
|
return opcode;
|
|
81
98
|
}
|
|
82
99
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvaW5zdHJ1Y3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSWxGLE9BQU8sRUFBRSxNQUFNLEVBQW9CLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQU1uSDs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLFdBQVc7SUFRL0I7Ozs7T0FJRztJQUNJLFFBQVE7UUFDYixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEQsb0RBQW9EO1FBQ3BELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBMEIsRUFBRSxDQUFDO1lBQzdFLGNBQWMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztRQUN6RCxDQUFDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELHdFQUF3RTtJQUNqRSxNQUFNLENBQUMsV0FBVyxDQUV2QixHQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsc0VBQXNFO0lBQy9ELFNBQVM7UUFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBa0IsQ0FBQztRQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNwRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksRUFBRSxDQUFDLE1BQWMsRUFBRSxVQUF5QjtRQUNqRCxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUM5QyxLQUFLLEVBQUUsR0FBVyxFQUFFO2dCQUNsQixPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUErQixVQUF5QjtRQUN0RSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3pCLFdBQVcsRUFBRSxDQUFDLEdBQTBCLEVBQWUsRUFBRTtnQkFDdkQsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDekMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtnQkFDNUMsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzNCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLE9BQU8sQ0FBQyxNQUErRSxFQUFFO1FBQ2pHLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsaUZBQWlGO1FBQ2pGLDhDQUE4QztRQUM5QyxpRkFBaUY7UUFDakYscURBQXFEO1FBQ3JELGdEQUFnRDtRQUNoRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEYsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLElBQUk7UUFDYixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQWUsQ0FBQztRQUM3RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksa0RBQWtELENBQUMsQ0FBQztRQUNoSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxNQUFNO1FBQ2YsTUFBTSxNQUFNLEdBQUcsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBaUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzlGLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9EQUFvRCxDQUFDLENBQUM7UUFDbEgsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiJ9
|
|
@@ -5,7 +5,8 @@ import { Instruction } from './instruction.js';
|
|
|
5
5
|
/** Wire format that informs deserialization for instructions with two operands. */
|
|
6
6
|
export declare const TwoOperandWireFormat: OperandType[];
|
|
7
7
|
/** Wire format that informs deserialization for instructions with three operands. */
|
|
8
|
-
export declare const
|
|
8
|
+
export declare const ThreeOperandWireFormat8: OperandType[];
|
|
9
|
+
export declare const ThreeOperandWireFormat16: OperandType[];
|
|
9
10
|
/**
|
|
10
11
|
* Covers (de)serialization for an instruction with:
|
|
11
12
|
* indirect, inTag, and two UINT32s.
|
|
@@ -28,7 +29,8 @@ export declare abstract class ThreeOperandInstruction extends Instruction {
|
|
|
28
29
|
protected aOffset: number;
|
|
29
30
|
protected bOffset: number;
|
|
30
31
|
protected dstOffset: number;
|
|
31
|
-
static readonly
|
|
32
|
+
static readonly wireFormat8: OperandType[];
|
|
33
|
+
static readonly wireFormat16: OperandType[];
|
|
32
34
|
constructor(indirect: number, inTag: number, aOffset: number, bOffset: number, dstOffset: number);
|
|
33
35
|
}
|
|
34
36
|
export declare abstract class GetterInstruction extends Instruction {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruction_impl.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/instruction_impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,eAMhC,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"instruction_impl.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/instruction_impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,eAMhC,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,uBAAuB,eAOnC,CAAC;AACF,eAAO,MAAM,wBAAwB,eAOpC,CAAC;AAEF;;;GAGG;AACH,8BAAsB,qBAAsB,SAAQ,WAAW;IAK3D,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM;IACvB,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAC,SAAS,EAAE,MAAM;IAN7B,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAAwB;gBAGrD,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM;CAI9B;AAED;;;GAGG;AACH,8BAAsB,uBAAwB,SAAQ,WAAW;IAK7D,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM;IACvB,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAC,SAAS,EAAE,MAAM;IAR7B,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,CAA2B;IACrE,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAA4B;gBAG3D,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM;CAI9B;AAED,8BAAsB,iBAAkB,SAAQ,WAAW;IAI7C,SAAS,CAAC,QAAQ,EAAE,MAAM;IAAE,SAAS,CAAC,SAAS,EAAE,MAAM;IAFnE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAA8D;gBAEjF,QAAQ,EAAE,MAAM,EAAY,SAAS,EAAE,MAAM;IAItD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxD,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW;CAC1D"}
|
|
@@ -10,13 +10,21 @@ export const TwoOperandWireFormat = [
|
|
|
10
10
|
OperandType.UINT32,
|
|
11
11
|
];
|
|
12
12
|
/** Wire format that informs deserialization for instructions with three operands. */
|
|
13
|
-
export const
|
|
13
|
+
export const ThreeOperandWireFormat8 = [
|
|
14
|
+
OperandType.UINT8,
|
|
15
|
+
OperandType.UINT8,
|
|
16
|
+
OperandType.UINT8,
|
|
14
17
|
OperandType.UINT8,
|
|
15
18
|
OperandType.UINT8,
|
|
16
19
|
OperandType.UINT8,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
OperandType.
|
|
20
|
+
];
|
|
21
|
+
export const ThreeOperandWireFormat16 = [
|
|
22
|
+
OperandType.UINT8,
|
|
23
|
+
OperandType.UINT8,
|
|
24
|
+
OperandType.UINT8,
|
|
25
|
+
OperandType.UINT16,
|
|
26
|
+
OperandType.UINT16,
|
|
27
|
+
OperandType.UINT16,
|
|
20
28
|
];
|
|
21
29
|
/**
|
|
22
30
|
* Covers (de)serialization for an instruction with:
|
|
@@ -47,8 +55,8 @@ export class ThreeOperandInstruction extends Instruction {
|
|
|
47
55
|
this.dstOffset = dstOffset;
|
|
48
56
|
}
|
|
49
57
|
}
|
|
50
|
-
|
|
51
|
-
ThreeOperandInstruction.
|
|
58
|
+
ThreeOperandInstruction.wireFormat8 = ThreeOperandWireFormat8;
|
|
59
|
+
ThreeOperandInstruction.wireFormat16 = ThreeOperandWireFormat16;
|
|
52
60
|
export class GetterInstruction extends Instruction {
|
|
53
61
|
constructor(indirect, dstOffset) {
|
|
54
62
|
super();
|
|
@@ -67,4 +75,4 @@ export class GetterInstruction extends Instruction {
|
|
|
67
75
|
}
|
|
68
76
|
// Informs (de)serialization. See Instruction.deserialize.
|
|
69
77
|
GetterInstruction.wireFormat = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT32];
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb25faW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9pbnN0cnVjdGlvbl9pbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLG1GQUFtRjtBQUNuRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRztJQUNsQyxXQUFXLENBQUMsS0FBSztJQUNqQixXQUFXLENBQUMsS0FBSztJQUNqQixXQUFXLENBQUMsS0FBSztJQUNqQixXQUFXLENBQUMsTUFBTTtJQUNsQixXQUFXLENBQUMsTUFBTTtDQUNuQixDQUFDO0FBRUYscUZBQXFGO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLFdBQVcsQ0FBQyxLQUFLO0lBQ2pCLFdBQVcsQ0FBQyxLQUFLO0lBQ2pCLFdBQVcsQ0FBQyxLQUFLO0lBQ2pCLFdBQVcsQ0FBQyxLQUFLO0lBQ2pCLFdBQVcsQ0FBQyxLQUFLO0lBQ2pCLFdBQVcsQ0FBQyxLQUFLO0NBQ2xCLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxXQUFXLENBQUMsS0FBSztJQUNqQixXQUFXLENBQUMsS0FBSztJQUNqQixXQUFXLENBQUMsS0FBSztJQUNqQixXQUFXLENBQUMsTUFBTTtJQUNsQixXQUFXLENBQUMsTUFBTTtJQUNsQixXQUFXLENBQUMsTUFBTTtDQUNuQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxXQUFXO0lBSTdELFlBQ1ksUUFBZ0IsRUFDaEIsS0FBYSxFQUNiLE9BQWUsRUFDZixTQUFpQjtRQUUzQixLQUFLLEVBQUUsQ0FBQztRQUxFLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBRzdCLENBQUM7O0FBVkQsMERBQTBEO0FBQzFDLGdDQUFVLEdBQWtCLG9CQUFvQixDQUFDO0FBWW5FOzs7R0FHRztBQUNILE1BQU0sT0FBZ0IsdUJBQXdCLFNBQVEsV0FBVztJQUkvRCxZQUNZLFFBQWdCLEVBQ2hCLEtBQWEsRUFDYixPQUFlLEVBQ2YsT0FBZSxFQUNmLFNBQWlCO1FBRTNCLEtBQUssRUFBRSxDQUFDO1FBTkUsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBRzdCLENBQUM7O0FBWGUsbUNBQVcsR0FBa0IsdUJBQXVCLENBQUM7QUFDckQsb0NBQVksR0FBa0Isd0JBQXdCLENBQUM7QUFhekUsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxXQUFXO0lBSXpELFlBQXNCLFFBQWdCLEVBQVksU0FBaUI7UUFDakUsS0FBSyxFQUFFLENBQUM7UUFEWSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQVksY0FBUyxHQUFULFNBQVMsQ0FBUTtJQUVuRSxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQjtRQUN0QyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFaEUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6RixNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQzs7QUFsQkQsMERBQTBEO0FBQzFDLDRCQUFVLEdBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyJ9
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import type { AvmContext } from '../avm_context.js';
|
|
3
|
-
import { BufferCursor } from '../serialization/buffer_cursor.js';
|
|
4
2
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
5
3
|
import { Instruction } from './instruction.js';
|
|
6
4
|
import { TwoOperandInstruction } from './instruction_impl.js';
|
|
@@ -11,13 +9,13 @@ export declare class Set extends Instruction {
|
|
|
11
9
|
private dstOffset;
|
|
12
10
|
static readonly type: string;
|
|
13
11
|
static readonly opcode: Opcode;
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
static readonly wireFormat8: OperandType[];
|
|
13
|
+
static readonly wireFormat16: OperandType[];
|
|
14
|
+
static readonly wireFormat32: OperandType[];
|
|
15
|
+
static readonly wireFormat64: OperandType[];
|
|
16
|
+
static readonly wireFormat128: OperandType[];
|
|
17
|
+
static readonly wireFormatFF: OperandType[];
|
|
16
18
|
constructor(indirect: number, inTag: number, value: bigint | number, dstOffset: number);
|
|
17
|
-
/** We need to use a custom serialize function because of the variable length of the value. */
|
|
18
|
-
serialize(): Buffer;
|
|
19
|
-
/** We need to use a custom deserialize function because of the variable length of the value. */
|
|
20
|
-
static deserialize(this: typeof Set, buf: BufferCursor | Buffer): Set;
|
|
21
19
|
execute(context: AvmContext): Promise<void>;
|
|
22
20
|
}
|
|
23
21
|
export declare class CMov extends Instruction {
|
|
@@ -44,7 +42,8 @@ export declare class Mov extends Instruction {
|
|
|
44
42
|
private dstOffset;
|
|
45
43
|
static readonly type: string;
|
|
46
44
|
static readonly opcode: Opcode;
|
|
47
|
-
static readonly
|
|
45
|
+
static readonly wireFormat8: OperandType[];
|
|
46
|
+
static readonly wireFormat16: OperandType[];
|
|
48
47
|
constructor(indirect: number, srcOffset: number, dstOffset: number);
|
|
49
48
|
execute(context: AvmContext): Promise<void>;
|
|
50
49
|
}
|