branch: externals/beardbolt commit 7e4baa833e963ce2b055134a52fe149981bbc138 Author: Jay Kamat <jaygka...@gmail.com> Commit: Jay Kamat <jaygka...@gmail.com>
Fix a few comments --- README.org | 7 ++++++- rmsbolt.el | 28 ++++++++++++++-------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/README.org b/README.org index 8559c842e3..369479e128 100644 --- a/README.org +++ b/README.org @@ -21,6 +21,10 @@ versa. - It's easy to add new languages (even those that use unique bytecode formats) without touching many files. - Full undo (tree) system from Emacs on disassembly for easy comparisons +- Much more flexible + - Supports dissasembling to bytecode as well as assembly + - Supports many languages that godbolt does not support, such as python, + common lisp, and ocaml. - Infinitely hackable! * Installation @@ -84,7 +88,8 @@ No support for source->asm matching or filtering. * Adding a Language Adding support for a new language is fairly easy. The closer it is to existing -compilers, the easier it will be. However, it is not excessively hard to add +compilers, the easier it will be (to the point where a clone of a C compiler is +just a couple copy-paste lines). However, it is not excessively hard to add support for completely foreign compilers and bytecode/assembly formats. As a minimum starting point, you must know how to compile a source file to diff --git a/rmsbolt.el b/rmsbolt.el index 35b0a404d1..8cf4b02276 100644 --- a/rmsbolt.el +++ b/rmsbolt.el @@ -215,7 +215,7 @@ Outputs assembly file if ASM." (mode 'fundamental-mode :type 'symbol - :documentation "The mode to activate this language in.") + :documentation "The mode(s) to activate this language in.") (supports-disass nil :type 'bool @@ -272,7 +272,7 @@ Outputs assembly file if ASM." " "))) cmd)) (cl-defun rmsbolt--ocaml-compile-cmd (&key src-buffer) - "Process a compile command for gcc/clang. + "Process a compile command for ocaml. Needed as ocaml cannot output asm to a non-hardcoded file" (let* ((diss (buffer-local-value 'rmsbolt-disassemble src-buffer)) @@ -303,7 +303,7 @@ Outputs assembly file if ASM." (cl-defun rmsbolt--lisp-compile-cmd (&key src-buffer) "Process a compile command for common lisp. - Assumes function name to dissasemble is 'main'." + Assumes function name to dissasemble is 'main'." (let* ((cmd (buffer-local-value 'rmsbolt-command src-buffer)) (interpreter (cl-first (split-string cmd nil t))) (disass-eval "\"(disassemble 'main)\"") @@ -316,17 +316,17 @@ Outputs assembly file if ASM." "--eval" disass-eval "--non-interactive" ;; Remove leading comments "|" "sed" "'s/^;\s//'" ">" - (rmsbolt-output-filename src-buffer)) - " ")) -("clisp" - (mapconcat 'identity - (list cmd "-q" "-x" - (concat - "\"(load \\\"" (buffer-file-name) "\\\") " disass-eval-unquoted "\"") - ">" (rmsbolt-output-filename src-buffer)) - " ")) -(_ - (error "This Common Lisp interpreter is not supported"))))) + (rmsbolt-output-filename src-buffer)) + " ")) + ("clisp" + (mapconcat 'identity + (list cmd "-q" "-x" + (concat + "\"(load \\\"" (buffer-file-name) "\\\") " disass-eval-unquoted "\"") + ">" (rmsbolt-output-filename src-buffer)) + " ")) + (_ + (error "This Common Lisp interpreter is not supported"))))) (cl-defun rmsbolt--rust-compile-cmd (&key src-buffer) "Process a compile command for rustc." (let* ((cmd (buffer-local-value 'rmsbolt-command src-buffer))