{"id":16907443,"url":"https://github.com/minad/chasm","last_synced_at":"2025-04-11T11:31:06.456Z","repository":{"id":50324565,"uuid":"132787558","full_name":"minad/chasm","owner":"minad","description":"Java Bytecode Assembler and Disassembler which uses S-expressions","archived":false,"fork":false,"pushed_at":"2019-12-22T10:21:15.000Z","size":1495,"stargazers_count":27,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T13:11:21.286Z","etag":null,"topics":["asm","assembler","bytecode","disassembler","java","java-bytecode","s-expressions"],"latest_commit_sha":null,"homepage":"","language":"Java","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/minad.png","metadata":{"files":{"readme":"README.adoc","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}},"created_at":"2018-05-09T16:56:25.000Z","updated_at":"2025-02-17T09:02:34.000Z","dependencies_parsed_at":"2022-09-24T12:11:59.690Z","dependency_job_id":null,"html_url":"https://github.com/minad/chasm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minad%2Fchasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minad%2Fchasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minad%2Fchasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minad%2Fchasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/minad","download_url":"https://codeload.github.com/minad/chasm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248383905,"owners_count":21094628,"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":["asm","assembler","bytecode","disassembler","java","java-bytecode","s-expressions"],"created_at":"2024-10-13T18:47:25.325Z","updated_at":"2025-04-11T11:31:06.162Z","avatar_url":"https://github.com/minad.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"= Chasm - Java assembler and disassembler using S-expressions\n\nChasm can disassemble `{asterisk}.class` files and `{asterisk}.jar` files and output assembly in s-expression form.\nFurthermore the main use case is to read s-expression assembly files and output `{asterisk}.class` or `{asterisk}.jar` files.\nThe s-expression syntax is both easy to parse and easy to generate.\nChasm uses the de-facto standard library ow2 ASM for bytecode generation. Since Chasm is only a minimal syntax on top of\nASM it is easy to keep it up to date with the current bytecode standard.\n\n[source,scheme]\n----\n(class 53 (final public super) chasm/Main null java/lang/Object ()\n (source \"Main.java\" null)\n (inner-class chasm/Server$Command chasm/Server Command (abstract interface public static))\n (inner-class java/lang/invoke/MethodHandles$Lookup java/lang/invoke/MethodHandles Lookup (final public static))\n (method (public static) main \"([Ljava/lang/String;)V\" null (java/io/IOException)\n  (code\n   (label L0)\n   (line 13 L0)\n   (invokedynamic run \"()Lchasm/Server$Command;\"\n    (H invokestatic java/lang/invoke/LambdaMetafactory metafactory\n     \"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;\" false)\n    ((T \"(Ljava/nio/file/Path;[Ljava/lang/String;Ljava/io/PrintStream;)V\")\n     (H invokestatic chasm/Main run\n      \"(Ljava/nio/file/Path;[Ljava/lang/String;Ljava/io/PrintStream;)V\" false)\n     (T \"(Ljava/nio/file/Path;[Ljava/lang/String;Ljava/io/PrintStream;)V\")))\n   (aload 0)\n   (invokestatic chasm/Server main \"(Lchasm/Server$Command;[Ljava/lang/String;)V\")\n   (label L1)\n   (line 14 L1)\n   (return)\n   (label L2)\n   (local args \"[Ljava/lang/String;\" null L0 L2 0)\n   (maxs 2 1)))\n...\n----\n\nSee link:example.chasm[] for the full example.\n\n== Quick start\n\n1. Build with `gradle` or use the precompiled binary in `dist` (reproducible build).\n2. Disassemble class/jar file to chasm with `chasm example.{class|jar} example.chasm`\n2. Assemble chasm to class/jar file with `chasm example.chasm example.{class|jar}`\n\n== Binary version\n\nThe 'dist' directory contains a precompiled version which includes\na copy of ASM.\n\n== License\n\nMIT (c) 2018 Daniel Mendler\n\nASM: a very small and fast Java bytecode manipulation framework\nCopyright (c) 2000-2011 INRIA, France Telecom\nAll rights reserved.\n\n== Related projects\n\n* http://asm.ow2.io/[ObjectWeb ASM]\n* https://wiki.openjdk.java.net/display/CodeTools/asmtools[jdk asmtools]\n* https://github.com/achmelev/lilac[Lilac]\n** Does perfect roundtrip like chasm\n** Overall more complex and more complex syntax\n** Not based on ObjectWeb ASM\n* https://github.com/Storyyeller/Krakatau[Krakatau]\n** Written in Python\n** Includes a decompiler\n* https://github.com/davidar/jasmin[Jasmin]\n* https://github.com/Whiley/Jasm[Whiley Jasm]\n* http://www.judoscript.org/articles/jamaica.html[Jamaica]\n* https://commons.apache.org/proper/commons-bcel/[BCEL]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminad%2Fchasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminad%2Fchasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminad%2Fchasm/lists"}