1cabal-version: 3.42name: qute3version: 0.1.04synopsis: A software analysis framework built around the QBE intermediate language.5description:6 This library provides formal semantics for the [QBE intermediate language](https://c9x.me/compile/)7 by providing [modular monadic semantics](https://doi.org/10.1007/3-540-61055-3_39) implemented using8 an [abstract monad](https://doi.org/10.1145/3607833). The package refers to this abstract monad as9 the 'Language.QBE.Simulator.State.Simulator' monad. It provides several primitives that are used by10 the "Language.QBE.Simulator" to /abstractly/ describe the semantics of QBE instructions. The11 'Language.QBE.Simulator.State.Simulator' can then be instantiated with /concrete/ semantics. For12 example, the "Language.QBE.Simulator.Default.State" module provides an instantiation using a13 'Control.Monad.State' monad. This instantiation, and the 'Language.QBE.Simulator.State.Simulator'14 itself, are parameterized over the representation of QBE instruction operand values.1516 To abstractly describe operations on values passed to QBE instructions, this library additionally17 provides an expression language abstraction in the "Language.QBE.Simulator.Expression" module.18 Further, an implementation of this expression language based on fixed-width integer values is19 available in the "Language.QBE.Simulator.Default.Expression" module.2021 A separate [qute-symex](https://hackage.haskell.org/package/qute-symex) package provides an22 implementation of the expression abstraction and the 'Language.QBE.Simulator.State.Simulator'23 monad for formal reasoning about a software under test using24 [symbolic execution](https://en.wikipedia.org/wiki/Symbolic_execution).25 Similar dynamic software testing techniques can be implemented using this library. Additionally,26 there is some preliminary support for static analysis as well through the27 "Language.QBE.Analysis.CFG" module.2829 More information on the underlying idea and vision behind Qute is available in a30 [separate paper](https://www.ibr.cs.tu-bs.de/vss/Publications/2026/tempel_26_qute.pdf).31license: GPL-3.0-only AND MIT AND BSD-3-Clause32-- license-file:33author: Sören Tempel34maintainer: soeren+hackage@soeren-tempel.net35-- copyright:36category: Language37build-type: Simple38homepage: https://git.8pit.net/qute39bug-reports: https://github.com/nmeum/qute/issues40extra-source-files: test/testdata/*.qbe4142source-repository head43 type: git44 location: https://git.8pit.net/qute.git4546common warnings47 -- -Wall-missed-specializations can be useful too48 ghc-options: -Wall4950common opts51 ghc-options: -fspecialise-aggressively5253library54 import: warnings, opts55 -- other-modules:56 hs-source-dirs: src57 default-language: GHC20215859 build-depends:60 base,61 array,62 bytestring,63 deepseq,64 template-haskell,65 qute-syntax,66 containers,67 exceptions,68 parsec,69 mtl7071 other-modules:72 Language.QBE.Simulator.Default.Generator7374 exposed-modules:75 Data.Archive,76 Language.QBE.Analysis.CFG,77 Language.QBE.Analysis.CDG,78 Language.QBE.Analysis.Graph,79 Language.QBE.Linker,80 Language.QBE.Simulator,81 Language.QBE.Simulator.ABI.C,82 Language.QBE.Simulator.ABI.Errno,83 Language.QBE.Simulator.ABI.POSIX,84 Language.QBE.Simulator.State,85 Language.QBE.Simulator.Error,86 Language.QBE.Simulator.Memory,87 Language.QBE.Simulator.Expression,88 Language.QBE.Simulator.Default.State,89 Language.QBE.Simulator.Default.Funcs,90 Language.QBE.Simulator.Default.Expression9192benchmark qute93 import: warnings, opts94 default-language: GHC202195 type: exitcode-stdio-1.096 hs-source-dirs: bench97 main-is: Main.hs9899 build-depends:100 base,101 criterion ^>= 1.6.4.0,102 qute,103 qute-syntax104105test-suite qute-test106 import: warnings107 default-language: GHC2021108 type: exitcode-stdio-1.0109 hs-source-dirs: test110 main-is: Main.hs111 -- Prevent GHGC from optimizing float2Double calls.112 ghc-options: -O0113114 other-modules:115 Archive,116 Linker,117 Analysis,118 Simulator,119 Expression,120 Memory,121 State,122 Util123124 build-depends:125 base,126 array,127 parsec,128 filepath,129 qute,130 qute-syntax,131 containers,132 exceptions,133 mtl,134 tasty >=1.4.3,135 tasty-hunit >=0.10