summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Atomically read and write to interface files.mainJosh Rahm2024-12-11
| | | | | This sychronizes multiple processes so fiddle files can be effectively complied in parallel.
* Implement new syntactic-sugar for skip_to(). Allows specifying the offset ↵Josh Rahm2024-12-03
| | | | directly on a register
* Add metadata information to the BitsSubStructure and compile it correctly.Josh Rahm2024-11-27
|
* Fix bug where fiddle was incorrectly calculating the size of sub-bitfields ↵Josh Rahm2024-11-27
| | | | structs
* Added syntax for skip_to and buffer.Josh Rahm2024-11-26
| | | | | | | buffer tells fiddle to create a buffer of a number of bytes. skip_to tells fiddle to skip to some new offset. It's essentially an unnamed buffer
* Add ability to store the fiddle interface files in a different folder.Josh Rahm2024-11-12
|
* Fix bug where superfluous index argument was added to getters.Josh Rahm2024-10-29
|
* regression: using statements not working properly. Fixed.Josh Rahm2024-10-28
|
* Enforce that registers are either 8, 16, 32, or 64 bits.Josh Rahm2024-10-27
| | | | | Fixed the issues where the output C code did not use correct register sizes.
* Finish implementing alpha-version of the C-backend.Josh Rahm2024-10-27
| | | | | | This produces valid C code in a header file and also provides an INTF macro which makes it much less obtuse to call the various functions to set and unset bitfields.
* C backend now implmeents some enumsJosh Rahm2024-10-24
|
* Implement bitfield arrays.Josh Rahm2024-10-22
|
* Change the AST to use Names instead of Identifiers for ObjDecls and BitsDeclsJosh Rahm2024-10-19
| | | | | This is to make anonymous expansion better and cleaner. It gets rid of the hash-mark hack introduced earlier.
* Provide more data during qualification about how a path is qualified.Josh Rahm2024-10-19
| | | | | | Now it includes information about the package a symobl is in. The object its in and the register its in. This allows better code generation in the backend that's somewhat more organized.
* bugfix: bit unions and structs should start at correct offset.Josh Rahm2024-10-17
| | | | The compiler reset the offset to 0 in bitfield substructures.
* Add ContExpression syntax tree.Josh Rahm2024-10-17
| | | | This is for expressions which must be calculatable at compile time.
* Add framework for more easily editing files.Josh Rahm2024-10-16
| | | | | | | | This introduces the FilesM monad, which allows for monadic and fragmented writing to files in a filesystem. This provides an abstraction over writing to different "fragments" of files so implementation, headers and declarations can all be written using just one pass of the compiler.
* Start implementing a bunch of the C backend.Josh Rahm2024-10-13
| | | | | Have basic implementations down for coarse registers. Working on getting bitfields supported.
* Change 'Expression' to use numbers with units.Josh Rahm2024-10-11
| | | | | This helps to catch bugs in the compiler, specifically ones related to mixing up bits and bytes.
* Add ast internal utilJosh Rahm2024-10-11
|
* Further implement C backend.Josh Rahm2024-10-11
| | | | | There is a problem where I'm mixing up bits and bytes. I think I'll try to resolve that using more type-level constraints.
* Change register identifiers to Guarantee a value in qualification.Josh Rahm2024-10-11
| | | | This remove the burden of generating names from the backend.
* Replace all the qualification metadata with 'When (s .>= Qualified)'Josh Rahm2024-10-11
| | | | | This makes deriving much easier and cleans up the messy contexts in GenericTree and elsewhere at the cost of slightly more obtuse syntax.
* Prefer GADT's over typ families for some SyntaxTree elements.Josh Rahm2024-10-11
|
* Change Witness to be a GADT.Josh Rahm2024-10-10
| | | | | This makes is much simpler to represent. Surprised I missed this ability.
* Add backend support and start implementing a C backend.oJosh Rahm2024-10-10
|
* Change some dependencies to avoid rebuilds.Josh Rahm2024-10-09
|
* CompilationPhases are categories.Josh Rahm2024-10-09
|
* Add system to spec for running integration shell scirpts.Josh Rahm2024-10-09
| | | | | | The spec will recursively go through the test directories and look for `test.sh` files. If it finds one, it will run it. If the script returns 0, then the test passes, otherwise the test fails.
* Prepare code to make testing much easier.Josh Rahm2024-10-09
| | | | | | This is primarily done by making more things json and by instrumenting which stage in compilation to dump and others. This means I can make bash scripts for end to end testing.
* Change syntax trees to include the names of the records.Josh Rahm2024-10-08
|
* Add offset information to some AST elements.wipJosh Rahm2024-10-07
|
* Add back the enum consistency check.Josh Rahm2024-10-05
|
* Much better handling for the generic syntax tree.Josh Rahm2024-10-05
| | | | It now converts normal data into JSON rather than using "show".
* Implement qualification.Josh Rahm2024-10-05
| | | | | | | Big change. Implements qualification, which separates the qualification concerns from the ConsistencyCheck phase. I'm getting close to implementing a backend.
* Clean up warnings and remove unused files.Josh Rahm2024-10-03
|
* Wip: added -WallJosh Rahm2024-10-03
|
* Make changes to AST for qualification step.Josh Rahm2024-10-03
|
* Add empty qualification stage.Josh Rahm2024-10-03
| | | | | This stage will be responsible for qualifying all types and attaching necessary metadata to make the job of later stages much easier.
* Do ConsistencyChecking on the level of directivesJosh Rahm2024-10-03
|
* Change the UnitInterface to have uncoupled Metadata.Josh Rahm2024-10-03
| | | | As opposed to the original 'Annotated' data type.
* Another monolithic change. Not good git ettiquite.Josh Rahm2024-10-03
| | | | | Import statements are fully implemented including compiling to an interface file for faster compilations.
* wipJosh Rahm2024-09-28
|
* Option parsing with optparse-applicativeJosh Rahm2024-09-28
|
* Add import resolution phase and also add a more abstractions aroundJosh Rahm2024-09-27
| | | | compliation phases.
* Rename some of the stages.Josh Rahm2024-09-26
| | | | | | Stage1 -> Parsed Stage2 -> Expanded Stage3 -> Checked
* Don't allow duplicate types.Josh Rahm2024-09-25
|
* cleanup: re-organize Stage2 so the derived AdvaceStage instances are together.Josh Rahm2024-09-25
|
* feat: Add AdvanceStage typeclass and refactor code to use itJosh Rahm2024-09-25
| | | | | | | Introduced the `AdvanceStage` typeclass, which provides a mechanism to transition AST elements between different compilation stages. This abstraction facilitates easier traversal and modification of the syntax tree as it progresses through various compilation phases.
* Split the Ast file into multiple sub files.Josh Rahm2024-09-25
| | | | Make some more changes to the generic implementation of EasySwitchStage.