Move opcodes to constants
This commit is contained in:
parent
f6c01520ae
commit
8f8577b7c6
@ -1,3 +1,8 @@
|
|||||||
|
// tslint:disable:number-literal-format
|
||||||
export const constants = {
|
export const constants = {
|
||||||
NEW_CONTRACT: 'NEW_CONTRACT',
|
NEW_CONTRACT: 'NEW_CONTRACT',
|
||||||
|
PUSH1: 0x60,
|
||||||
|
PUSH2: 0x61,
|
||||||
|
PUSH32: 0x7f,
|
||||||
|
TIMESTAMP: 0x42,
|
||||||
};
|
};
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
// tslint:disable:number-literal-format
|
import { constants } from './constants';
|
||||||
const PUSH1 = 0x60;
|
|
||||||
const PUSH32 = 0x7f;
|
|
||||||
const isPush = (inst: number) => inst >= PUSH1 && inst <= PUSH32;
|
|
||||||
|
|
||||||
const pushDataLength = (inst: number) => inst - PUSH1 + 1;
|
const isPush = (inst: number) => inst >= constants.PUSH1 && inst <= constants.PUSH32;
|
||||||
|
|
||||||
|
const pushDataLength = (inst: number) => inst - constants.PUSH1 + 1;
|
||||||
|
|
||||||
const instructionLength = (inst: number) => (isPush(inst) ? pushDataLength(inst) + 1 : 1);
|
const instructionLength = (inst: number) => (isPush(inst) ? pushDataLength(inst) + 1 : 1);
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ import * as fs from 'fs';
|
|||||||
import 'mocha';
|
import 'mocha';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
|
import { constants } from '../src/constants';
|
||||||
import { getPcToInstructionIndexMapping } from '../src/instructions';
|
import { getPcToInstructionIndexMapping } from '../src/instructions';
|
||||||
|
|
||||||
const expect = chai.expect;
|
const expect = chai.expect;
|
||||||
@ -10,10 +11,7 @@ const expect = chai.expect;
|
|||||||
describe('instructions', () => {
|
describe('instructions', () => {
|
||||||
describe('#getPcToInstructionIndexMapping', () => {
|
describe('#getPcToInstructionIndexMapping', () => {
|
||||||
it('correctly maps pcs to instruction indexed', () => {
|
it('correctly maps pcs to instruction indexed', () => {
|
||||||
const PUSH1 = 0x60;
|
const bytecode = new Uint8Array([constants.PUSH1, 42, constants.PUSH2, 1, 2, constants.TIMESTAMP]);
|
||||||
const PUSH2 = 0x61;
|
|
||||||
const TIMESTAMP = 0x42;
|
|
||||||
const bytecode = new Uint8Array([PUSH1, 42, PUSH2, 1, 2, TIMESTAMP]);
|
|
||||||
const pcToInstruction = getPcToInstructionIndexMapping(bytecode);
|
const pcToInstruction = getPcToInstructionIndexMapping(bytecode);
|
||||||
const expectedPcToInstruction = { '0': 0, '2': 1, '5': 2 };
|
const expectedPcToInstruction = { '0': 0, '2': 1, '5': 2 };
|
||||||
expect(pcToInstruction).to.be.deep.equal(expectedPcToInstruction);
|
expect(pcToInstruction).to.be.deep.equal(expectedPcToInstruction);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user