Tristan Ravitch
f12166c2c3
Add a trivial definition of the architecture-specific abstract evaluation function
2017-10-04 15:46:33 -07:00
Tristan Ravitch
ab29030e14
Implement the initial abstract state
2017-10-04 15:44:59 -07:00
Tristan Ravitch
6a14cfffb8
Implement archDemandContext
...
This required a few more instances and a wrapper around `ArchStmt`
2017-10-04 14:40:36 -07:00
Tristan Ravitch
57db5aa6f6
Add a definition of the jump table entry size
2017-10-04 13:26:08 -07:00
Tristan Ravitch
c02b0c605c
Add a trap arch-specific statement
2017-10-04 13:25:56 -07:00
Tristan Ravitch
7f8410ce7f
Fill in some previously undefined IP value calculations
2017-10-04 11:24:16 -07:00
Tristan Ravitch
af6ead250a
Add some documentation
2017-10-04 11:08:42 -07:00
Tristan Ravitch
20f078e9eb
Hook up the execInstruction functions
...
These are now referenced in the necessary spots in the ArchitectureInfo definitions
2017-10-04 10:16:54 -07:00
Tristan Ravitch
498ff33a6d
Finish the disassembler skeleton
...
There are still some IP values to compute, but the shape of the algorithm is there
2017-10-04 10:10:06 -07:00
Tristan Ravitch
047e84c586
Remove an unused import
2017-10-04 10:10:06 -07:00
Tristan Ravitch
48f556ffcb
Add some more helpers for the Generator monad
2017-10-04 10:10:06 -07:00
Tristan Ravitch
00f2b1d423
Add a context that we'll need
2017-10-04 10:10:06 -07:00
Tristan Ravitch
eec7075b46
Implement catchError in a MonadError instance
2017-10-04 10:10:06 -07:00
Ben Selfridge
3a49345b15
Added Semantics directory, had forgotten to add it previously
2017-10-04 10:03:29 -07:00
Ben Selfridge
5de25b8906
Merge branch 'master' of gitlab-ext.galois.com:macaw/macaw-semmc
2017-10-04 10:00:04 -07:00
Tristan Ravitch
9b8a7bac21
Remove an unused module
...
The rewriters are now in the Arch module
2017-10-04 08:48:52 -07:00
Tristan Ravitch
a851cddebd
Add arch-specific decls + type instances + rewriters
...
This also lets us add 'withArchConstraints' easily.
2017-10-03 18:59:35 -07:00
Tristan Ravitch
8a1195b1c6
Fill in the AddrWidthReprs for PPC
2017-10-03 18:07:21 -07:00
Tristan Ravitch
d1c86fd6d4
Remove unused imports
2017-10-03 18:07:15 -07:00
Tristan Ravitch
c751e02e6c
Use a ConstraintKind to simplify a number of constraint contexts
2017-10-03 18:05:46 -07:00
Tristan Ravitch
adf8a46f91
Implement more of the PPCGenerator state
2017-10-03 18:00:54 -07:00
Tristan Ravitch
2ec88811c5
Add special purpose registers to the definition of 'RegisterInfo'
2017-10-03 16:37:01 -07:00
Tristan Ravitch
171cc0d5ca
Remove an unused module
2017-10-03 16:31:41 -07:00
Tristan Ravitch
4a8828429c
Implement 'RegisterInfo' for PPCReg
2017-10-03 16:31:16 -07:00
Ben Selfridge
ad8d5fc3b4
Merge branch 'master' of gitlab-ext.galois.com:macaw/macaw-semmc
2017-10-03 14:43:33 -07:00
Tristan Ravitch
dc261436c7
Generalize the type of PPCReg
...
The width of a GPR was formerly fixed to 64 bits. It now reflects the actual arch.
2017-10-03 13:40:11 -07:00
Tristan Ravitch
5e136dceec
Let PPCGenerator report errors
...
It doesn't right now, but the translation from semantics to macaw will have some
opportunities around invalid encodings.
2017-10-03 13:39:59 -07:00
Tristan Ravitch
19b65973fc
Apply the state transformer
...
Committing now to experiment with adding failure modes to PPCGenerator
2017-10-03 13:23:20 -07:00
Tristan Ravitch
620b6f5980
Plumb through a parameter for the semantics lookup function
...
This is the function that will be generated via TH for PPC32 and PPC64.
2017-10-03 11:55:40 -07:00
Tristan Ravitch
6ed9d0d45d
Simplify more type variables and implement the error throwing function for the disassembler
...
We had two different state thread parameters: s and ids. We only need one (for
now), so unify them.
2017-10-03 11:09:23 -07:00
Tristan Ravitch
7aadfdf373
Remove a literal width of 64
...
That should have been a function of the architecture
2017-10-03 10:31:06 -07:00
Tristan Ravitch
083f9b4fa1
Remove a type parameter
...
We don't need the separate w - it is just a function (ArchAddrWidth) of the architecture.
2017-10-03 09:36:41 -07:00
Tristan Ravitch
d5c5d40ddb
Add more disassembly infrastructure
2017-10-02 17:32:59 -07:00
Ben Selfridge
2b810be25a
Merge branch 'master' of gitlab-ext.galois.com:macaw/macaw-semmc
2017-10-02 14:38:20 -07:00
Tristan Ravitch
7869f0e6c7
More work on disassemble
2017-10-02 14:29:15 -07:00
Tristan Ravitch
385bff0c4d
Move the generator monad into its own module
2017-10-02 14:17:36 -07:00
Tristan Ravitch
4b6b82cd13
Flesh out disassembleFn a bit more
2017-10-02 13:35:51 -07:00
Tristan Ravitch
20e5b5f00d
Add some type instance declarations for ppc32 and ppc64
2017-10-02 13:35:04 -07:00
Ben Selfridge
0526c6ae21
merging
2017-10-02 12:55:52 -07:00
Ben Selfridge
6f0d49f76e
Merge branch 'master' of gitlab-ext.galois.com:macaw/macaw-semmc
2017-10-02 12:54:43 -07:00
Tristan Ravitch
90a9c5ff65
Generalize the architecture info def
...
Now we can use the same infrastructure for PPC32 and PPC64. There might be some
rough edges, but we can work around those with type functions.
This change also adds an implementation for the preserved registers across
system calls for macaw.
2017-10-02 11:44:46 -07:00
Ben Selfridge
136d772abf
merging some things
2017-10-02 11:23:08 -07:00
Tristan Ravitch
4d9c7cd028
Split up the functions that will comprise ppc_linux_info
2017-10-02 11:19:34 -07:00
Ben Selfridge
677ba803b3
Added a couple things
2017-10-02 11:10:00 -07:00
Tristan Ravitch
1f1a6d8561
Abstract the stubs to work for ppc32 and ppc64
2017-10-02 10:59:40 -07:00
Tristan Ravitch
61218ca31d
Add stubs for most of the architecture info functions
2017-10-02 10:54:10 -07:00
Tristan Ravitch
45f08a2036
Fill in the endianness of the arch info
2017-10-02 10:37:44 -07:00
Tristan Ravitch
c997e2dada
Use explicit exports for PPCReg
2017-10-02 10:32:58 -07:00
Tristan Ravitch
6b967e1e8a
Fill out the fields of ppc_linux_info
2017-10-02 10:32:05 -07:00
Tristan Ravitch
cdd9647db9
Simplify some helpers in macaw-ppc
...
Use the MonadState combinators and a lift instead of explicitly wrapping
monadic actions.
2017-10-02 10:27:12 -07:00