{"id":22663354,"url":"https://github.com/valoran-m/soya","last_synced_at":"2025-03-29T09:14:25.194Z","repository":{"id":198016248,"uuid":"700047585","full_name":"valoran-M/Soya","owner":"valoran-M","description":"Object oriented langage optimising compiler","archived":false,"fork":false,"pushed_at":"2024-02-20T17:28:24.000Z","size":236,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T11:14:47.528Z","etag":null,"topics":["compiler","object-oriented-programming","optimisation"],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/valoran-M.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-03T20:56:06.000Z","updated_at":"2023-10-23T08:16:35.000Z","dependencies_parsed_at":"2023-10-16T12:32:06.754Z","dependency_job_id":"2db42a6a-efc2-405f-96b6-79aba9c23b27","html_url":"https://github.com/valoran-M/Soya","commit_stats":{"total_commits":118,"total_committers":1,"mean_commits":118.0,"dds":0.0,"last_synced_commit":"16f9cc453cc03c6e172ad9298cb20db2ff3ced40"},"previous_names":["valoran-m/soya"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valoran-M%2FSoya","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valoran-M%2FSoya/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valoran-M%2FSoya/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valoran-M%2FSoya/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/valoran-M","download_url":"https://codeload.github.com/valoran-M/Soya/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246162150,"owners_count":20733357,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compiler","object-oriented-programming","optimisation"],"created_at":"2024-12-09T12:18:29.674Z","updated_at":"2025-03-29T09:14:25.172Z","avatar_url":"https://github.com/valoran-M.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Soya\n\nA compiler from Soya to Mips\n\nThe documentation of Soya language is [here](./doc/soya.md)\n\n## Args\n\n- `-o [file]` Name of output file\n\n### language\n\n- `-Imp` : Compilation of Imp file\n\n### debug\n\n- `-dimp` : Save generated Imp\n- `-drtl` : Save generated RTL\n- `-dltl` : Save generated LTL\n- `-dlin` : Save generated linearize\n- `-dall` : activate all debug\n\n## Compiler pass\n\n### Languages\n\n1. [Soya](./soya/lib/lang/soya.ml) Soya language\n1. [Imp](./soya/lib/lang/imp.ml) A simple imperative language.\n1. [RTL](./soya/lib/lang/rtl.ml) A graph a representation of Imp with pseudos and\n   physicals registers with 3-address operations.\n1. [LTL](./soya/lib/lang/ltl.ml) Like RTL but with only physicals registers.\n1. [Linear](./soya/lib/lang/linear.ml) A linear representation of LTL\n\n### Pass\n\n1. [type check](./soya/lib/frontend/typecheck.ml) Creates typed Soya AST.\n1. [Soya2Imp](./soya/lib/frontend/soya2imp.ml) Translate Soya to an simple\n   iterative language (Imp).\n1. [Imp2RTL](./soya/lib/backend/imp2rtl.ml) Construction of the CFG, 3-address\n   code generation.\n1. [Const propagation](./soya/lib/backend/constprop.ml) Propagate constant with\n   a static analysis.\n1. [Call Convention](./soya/lib/backend/call_convention.ml) Use real register\n   to respect Call Convention.\n1. [Dead node elimination](./soya/lib/backend/dead_node.ml.ml) Remove useless\n   node when register destination is never used.\n1. [RTL2LTL](./soya/lib/backend/rtl2ltl.ml) Register allocation\n1. [linearize](./soya/lib/backend/linearize.ml) Linearization of the CFG\n1. [Asm Gen](./soya/lib/backend/asmgen.ml) Mips assembly code generation\n\n## Sources\n\n1. Jean-Christophe Filliâtre's compilation course [poly](https://www.lri.fr/~filliatr/pub/lpc.pdf)\n1. Constant propagation with conditionals branches [article](https://dl.acm.org/doi/pdf/10.1145/103135.103136)\n\n## Thanks\n\n1. [Gurvan](https://gitlab.com/Gurvan.dev) for its help in allocating registers\n   part\n2. [Paul](https://github.com/paulpatault) for its help in spelling\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaloran-m%2Fsoya","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvaloran-m%2Fsoya","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaloran-m%2Fsoya/lists"}