Project

General

Profile

Actions

Getting Started with x86 » History » Revision 13

« Previous | Revision 13/87 (diff) | Next »
Alexander Kamkin, 04/06/2017 04:21 PM


Getting Started with the x86 (8086) Demo

Prerequisite

MicroTESK should be installed (see Installation Guide).

Demo Specifications

Specifications of the x86 instruction set architecture can be found in $MICROTESK_HOME/arch/demo/x86/model.

Each instruction is described in nML (see nML Language Reference) by means of the following constructs (register move instruction is taken as an example):

  1. the signature
    op mov_r1616 (dst: GPR16, src: GPR16)
  2. the assembly format
    syntax = format("mov %s, %s", dst.syntax, src.syntax)
  3. the binary encoding
    image = format("1000101111%s%s", dst.image, src.image)
  4. the action
      action = {
        dst = src;
        ...
      }
    

To compile the ISA model, run the following command:

$MICROTESK_HOME/bin/compile.sh x86.nml

Demo Test Templates

Test templates for the x86 model can be found into $MICROTESK_HOME/arch/demo/x86/templates.

As by now, it contains six demonstration templates:
  1. block.rb to show usage of the instruction blocks
  2. block_random.rb to show creation of the randomized instruction sequences using block constructs
  3. euclid.rb to show MicroTESK simulating the execution of a test program to predict the resulting state of the PE under test
  4. random.rb to show generation of the randomized test cases by using biased values, intervals, arrays and distributions
  5. random_immediate.rb to show generation of random immediate values
  6. random_registers.rb to show dependent instructions with random registers

To run template processing use the following command:

$MICROTESK_HOME/bin/generate.sh x86 block.rb --code-file-prefix block --code-file-extension -v

When the processing is finished, files with the resulting assembly code can be found in $MICROTESK_HOME

For more information, see MicroTESK wiki: http://forge.ispras.ru/projects/microtesk/wiki/Template_Description_Language

Updated by Alexander Kamkin over 7 years ago · 87 revisions