UNPKG

disassembler-x86-intel

Version:

An Intel x86 disassembler, generates assembly from Opcode

47 lines (37 loc) 3.06 kB
import {suite, test} from '@testdeck/mocha'; import * as _chai from 'chai'; import {mergeMap, mergeMaps, mergeMapsMany} from '../src/helper/mergeMap'; import {Disassembler} from '../index'; import {MOD_RM_SET, Tabel} from '../src/constants/tables'; import {isNotANumber} from '../src/helper/isNotANumber'; import {mergeSets} from '../src/helper/mergeSets'; import {removeTrailingZero} from '../src/helper/removeTrailingZero'; _chai.should(); @suite class DisasmTest { before() { } @test 'Testing add'() { Disassembler.generateInstructions('8005'); } @test 'isNan'() { const s1 = new Set([1]); const s2 = new Set([2]); const s3 = mergeSets(s1, s2); console.log(s3); } @test 'remove Zero'() { console.log(removeTrailingZero('0011')); console.log(removeTrailingZero('001100')); console.log(removeTrailingZero('00110012')); console.log(removeTrailingZero('0000000')); } @test 'practical example'() { const val = Disassembler.generateInstructions('B00066BE27006788046683C601040167880466B908006681E90200678A44FF6702046683C601678804E2F0'); val.should.eql(JSON.parse("[{\"instruction\":\"mov\",\"operand1\":{\"register\":\"al\"},\"operand2\":{\"value\":\"00\"},\"position\":0},{\"instruction\":\"mov\",\"operand1\":{\"register\":\"si\"},\"operand2\":{\"value\":\"27\"},\"position\":2},{\"instruction\":\"mov\",\"operand1\":{\"register\":\"si\",\"pointer\":\"b\"},\"operand2\":{\"register\":\"al\"},\"position\":6},{\"instruction\":\"add\",\"operand1\":{\"register\":\"si\"},\"operand2\":{\"value\":\"01\"},\"position\":9},{\"instruction\":\"add\",\"operand1\":{\"register\":\"al\"},\"operand2\":{\"value\":\"01\"},\"position\":13},{\"instruction\":\"mov\",\"operand1\":{\"register\":\"si\",\"pointer\":\"b\"},\"operand2\":{\"register\":\"al\"},\"position\":15},{\"instruction\":\"mov\",\"operand1\":{\"register\":\"cx\"},\"operand2\":{\"value\":\"8\"},\"position\":18},{\"instruction\":\"sub\",\"operand1\":{\"register\":\"cx\"},\"operand2\":{\"value\":\"2\"},\"position\":22},{\"instruction\":\"mov\",\"operand1\":{\"register\":\"al\"},\"operand2\":{\"register\":\"si\",\"displacement\":\"FF\",\"pointer\":\"b\"},\"position\":27},{\"instruction\":\"add\",\"operand1\":{\"register\":\"al\"},\"operand2\":{\"register\":\"si\",\"pointer\":\"b\"},\"position\":31},{\"instruction\":\"add\",\"operand1\":{\"register\":\"si\"},\"operand2\":{\"value\":\"01\"},\"position\":34},{\"instruction\":\"mov\",\"operand1\":{\"register\":\"si\",\"pointer\":\"b\"},\"operand2\":{\"register\":\"al\"},\"position\":38},{\"instruction\":\"loop\",\"operand1\":{\"value\":\"1b\"},\"position\":41}]")); } @test 'negative disp'() { const val = Disassembler.generateInstructions('678A44FF'); val.should.eql(JSON.parse("[{\"instruction\":\"mov\",\"operand1\":{\"register\":\"al\"},\"operand2\":{\"register\":\"si\",\"displacement\":\"-01\",\"pointer\":\"b\"},\"position\":0}]")); } }