Commit message (Collapse) | Author | Age | |
---|---|---|---|
* | Atomically read and write to interface files.main | Josh Rahm | 2024-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 Rahm | 2024-12-03 |
| | | | | directly on a register | ||
* | Add metadata information to the BitsSubStructure and compile it correctly. | Josh Rahm | 2024-11-27 |
| | |||
* | Fix bug where fiddle was incorrectly calculating the size of sub-bitfields ↵ | Josh Rahm | 2024-11-27 |
| | | | | structs | ||
* | Added syntax for skip_to and buffer. | Josh Rahm | 2024-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 Rahm | 2024-11-12 |
| | |||
* | Fix bug where superfluous index argument was added to getters. | Josh Rahm | 2024-10-29 |
| | |||
* | regression: using statements not working properly. Fixed. | Josh Rahm | 2024-10-28 |
| | |||
* | Enforce that registers are either 8, 16, 32, or 64 bits. | Josh Rahm | 2024-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 Rahm | 2024-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 enums | Josh Rahm | 2024-10-24 |
| | |||
* | Implement bitfield arrays. | Josh Rahm | 2024-10-22 |
| | |||
* | Change the AST to use Names instead of Identifiers for ObjDecls and BitsDecls | Josh Rahm | 2024-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 Rahm | 2024-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 Rahm | 2024-10-17 |
| | | | | The compiler reset the offset to 0 in bitfield substructures. | ||
* | Add ContExpression syntax tree. | Josh Rahm | 2024-10-17 |
| | | | | This is for expressions which must be calculatable at compile time. | ||
* | Add framework for more easily editing files. | Josh Rahm | 2024-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 Rahm | 2024-10-13 |
| | | | | | Have basic implementations down for coarse registers. Working on getting bitfields supported. | ||
* | Change 'Expression' to use numbers with units. | Josh Rahm | 2024-10-11 |
| | | | | | This helps to catch bugs in the compiler, specifically ones related to mixing up bits and bytes. | ||
* | Add ast internal util | Josh Rahm | 2024-10-11 |
| | |||
* | Further implement C backend. | Josh Rahm | 2024-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 Rahm | 2024-10-11 |
| | | | | This remove the burden of generating names from the backend. | ||
* | Replace all the qualification metadata with 'When (s .>= Qualified)' | Josh Rahm | 2024-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 Rahm | 2024-10-11 |
| | |||
* | Change Witness to be a GADT. | Josh Rahm | 2024-10-10 |
| | | | | | This makes is much simpler to represent. Surprised I missed this ability. | ||
* | Add backend support and start implementing a C backend.o | Josh Rahm | 2024-10-10 |
| | |||
* | Change some dependencies to avoid rebuilds. | Josh Rahm | 2024-10-09 |
| | |||
* | CompilationPhases are categories. | Josh Rahm | 2024-10-09 |
| | |||
* | Add system to spec for running integration shell scirpts. | Josh Rahm | 2024-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 Rahm | 2024-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 Rahm | 2024-10-08 |
| | |||
* | Add offset information to some AST elements.wip | Josh Rahm | 2024-10-07 |
| | |||
* | Add back the enum consistency check. | Josh Rahm | 2024-10-05 |
| | |||
* | Much better handling for the generic syntax tree. | Josh Rahm | 2024-10-05 |
| | | | | It now converts normal data into JSON rather than using "show". | ||
* | Implement qualification. | Josh Rahm | 2024-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 Rahm | 2024-10-03 |
| | |||
* | Wip: added -Wall | Josh Rahm | 2024-10-03 |
| | |||
* | Make changes to AST for qualification step. | Josh Rahm | 2024-10-03 |
| | |||
* | Add empty qualification stage. | Josh Rahm | 2024-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 directives | Josh Rahm | 2024-10-03 |
| | |||
* | Change the UnitInterface to have uncoupled Metadata. | Josh Rahm | 2024-10-03 |
| | | | | As opposed to the original 'Annotated' data type. | ||
* | Another monolithic change. Not good git ettiquite. | Josh Rahm | 2024-10-03 |
| | | | | | Import statements are fully implemented including compiling to an interface file for faster compilations. | ||
* | wip | Josh Rahm | 2024-09-28 |
| | |||
* | Option parsing with optparse-applicative | Josh Rahm | 2024-09-28 |
| | |||
* | Add import resolution phase and also add a more abstractions around | Josh Rahm | 2024-09-27 |
| | | | | compliation phases. | ||
* | Rename some of the stages. | Josh Rahm | 2024-09-26 |
| | | | | | | Stage1 -> Parsed Stage2 -> Expanded Stage3 -> Checked | ||
* | Don't allow duplicate types. | Josh Rahm | 2024-09-25 |
| | |||
* | cleanup: re-organize Stage2 so the derived AdvaceStage instances are together. | Josh Rahm | 2024-09-25 |
| | |||
* | feat: Add AdvanceStage typeclass and refactor code to use it | Josh Rahm | 2024-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 Rahm | 2024-09-25 |
| | | | | Make some more changes to the generic implementation of EasySwitchStage. |