History log of /seL4-l4v-master/HOL4/examples/l3-machine-code/arm/model/armScript.sml
Revision Date Author Comments
# 98207e9d 31-Jan-2018 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add checks for unpredictable ARMv7 encodings.


# 78f3d14b 30-Jan-2018 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Improve handling of undefined and unpredictable for VFP instructions.


# 78579f78 24-Jul-2017 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Support more than one method of detecting floating-point underflow.

Also update the L3 importer, which can be configured for different underflow detection options.


# 8df33d5d 29-Jun-2017 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Minor updates to L3 ARM models.


# 086cbeb8 22-Jun-2017 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Minor changes within floating-point theory.

• The operations float_negate1985 and float_abs1985 have been removed.
• Added a predicate float_is_signalling and renamed float_some_nan to float_some_qnan.
• Fixed problem with EQ_tm and GT_tm being swapped in binary_ieeeSyntax.


# fd546f27 08-May-2017 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update ARM model for latest L3.

Simple bit patterns are now handled better.


# b87b5c41 19-Apr-2017 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update for latest version of L3.


# 7e1d02fe 17-Feb-2017 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Fix for vmov_double in ARM model.

Many of the changes in arm.sml (record type annotations) come from using a newer version of L3.


# e821cde6 05-Aug-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add vldm and vstm to ARMv7 model.

These aren't supported by the "step" or "spec" tools.


# f9637ba7 03-Aug-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Remove UndefinedVFP from ARMv7 model.


# 893e1146 02-Aug-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Extend floating-point support within the ARMv7 model.

The model can be configured for VFPv2, VFPv3 or VFPv4.

Most VFP instructions are modelled now but some are still missing, i.e.:

• VCVT for fixed-point and half-precision.
• VSTM and VLDM.


# 685f5a80 22-Jun-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update ARMv7 model for latest version of L3.


# 6c49cd84 19-May-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update the ARMv7, ARM-M0, MIPS and x86-64 models.

Exported from the latest version of L3.


# fdeae967 29-Apr-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update for the latest version of L3.

Changes have been made when exporting operations of the form:

`f : args -> state -> value * state`

If the state is not changed then this is now exported as

`f : args -> state -> value`

If the state is changed but the `value` type is `unit` then it this is now exported as

`f : args -> state -> state`.


# d5ee45bd 20-Jan-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Various updates to the L3 examples.

Most changes are brought about by improvements and generalisations within stateLib and utilsLib.

A Holmakefile has been added to a new decompilers sub-directory and some *decomp_demoScript files have also been added. This makes it easier to perform regression testing.


# 96edb9f3 20-Nov-2015 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update for the latest version of L3, which has additional floating-point support.

Cover IEEE754:1985 behaviour for "abs" and "neg". Also adds support for "compare", "toInt" and "fromInt" at the machine level.


# f69520e1 16-Oct-2015 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update model for latest version of L3.


# 0559f3bd 14-Jul-2015 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Make use of alignmentTheory in the l3-machine-code examples.


# dcc2c549 24-Nov-2014 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Some fixes for the L3 ARM model.

A number of bugs were detected when validating the L3 model against the tests used to check the old (monadic) ARM model. These can be found here:

http://www.cl.cam.ac.uk/~mom22/arm-tests/

The bugs were as follows:

1. Off by one error in definition of SignExtendFrom.
2. Off by one error in definition of SignedSatQ.
3. Error in setting Q flag for QDADD.
4. Error in setting the GE flags for USAX and USUB16.
5. Error in the top-halfword result for SXTB16, UXTB16, SXTAB16 and UXTAB16.
6. Error in handling the C flag for some data-processing instructions (looks to affect immediate value variants only).
7. Incorrectly identifying some STRD instructions as unpredictable.

Note that 1-5 relate to instructions that are not supported by the decompiler, and 7 just prevented some valid code from being decompiled. As such, 6 is the most significant error fixed here.

The model now passes all of the tests.


# ae61d92a 23-Oct-2014 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update for compatibility with the latest version of L3.


# a760a164 12-Sep-2014 Anthony Fox <anthony.fox@cl.cam.ac.uk>

The ARM model now includes an instruction encoder.

Also, expose the function arm_eval in arm_stepLib.


# bbe4fa68 27-Jul-2014 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update for L3 examples.

Fixes a potential problem with the handling of word replicate.

Moves some shared code into stateLib (the register_combinations function).

Some other minor fixes.


# 17aa1139 08-May-2014 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add tool support for working with ARM instructions MRS, MSR and RFE.


# 1dad77d3 08-Jan-2014 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update to ARM model.

Fixes MSR (banked register) and MRS (banked register) instructions, in accordance with corrections made within the ARM ARM.


# cd3a314a 16-Dec-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Minor update to ARMv7-AR model.


# 64cf73f2 27-Nov-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update ISA models.

The new models are generated by the latest version of L3. This mostly results in just a few formatting (pretty-printing) changes. However, bit-patterns are now expanded out in a different manner. Specifically, applications of “word_extract” (over the match word) are replaced with applications of “v2w” (over the bits generated by “boolify”). Some minor updates were needed to accommodate this change.


# 28acd234 15-Nov-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Minor change to ISA models.

All ‘rst record fields are now prefixed by the type name.


# ca803355 30-Aug-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Fix missing IncPC in specification of VMRS instruction.


# ea82f495 30-Aug-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

The Hoare-triples for PC-relative loads now have immediate values appearing in the code-pool.

This affects the triples that are generated for instruction such as "ldr r1, [pc, #12]".

The tools for the other ISA models need minor updates following changes in stateLib.


# b3d73d40 22-Aug-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Support more ARM VFP instructions.

Adds VMOV, VCMP and VMRS.


# eb0d8209 19-Aug-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Fix for Thumb instructions CBZ/CBNZ.


# 156fbbfe 23-Jul-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Some minor formatting (printing) changes in the L3 instruction set models.


# 73bf1a4d 08-Jul-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Reorganisation of files under examples/l3-machine-code.


# 788183c5 21-Jun-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Changes to the standard L3 ARM model.

These have been brought about by minor modifications to the L3 export (a little bit more simplification occurs).


# 488e897d 10-May-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Fix for ARM MOVW.


# 1b7b89d9 10-May-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Updates to l3-machine-code.

Includes a monadic version of the ARM model, which includes data aborts.


# e8bedb67 17-Apr-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Minor tweaks for l3-machine-code example.


# 9c2b9e2e 17-Apr-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update L3 ARM model.

Was missing some fixes.


# 89c7432e 15-Apr-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add some ARM VFP instruction support (under l3-machine-code).


# 00ff34a1 12-Jan-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Tweak to treatment of UNKNOWN flag values for multiplies (e.g. MULS) under ARMv4.


# 4ec8bdbe 10-Jan-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Minor fix to ARM specification.

Test for unpredictability of MUL instructions should be "Rd = Rn" and not "Rd = Rm". (Only applies to ARMv4 through to ARMv6.)


# bb9064c1 09-Jan-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

New ARM and x86 instruction set models, with tool support for generating Hoare triples.

The new models are generated using a domain specific language; see ITP 2012 paper: "Directions in ISA Specification" (LNCS 7406).

The tools should be quite a bit faster than those found in examples/ARM/v7 and examples/machine-code. However, they are less extensive (this is work-in-progress).