[hell] asmsh: assembler (s)hell
"Confuse your users, annoy your foes, lose your friends!"

(C) Copyright 2003, 2004 by Michal Zalewski et al (lcamtuf@coredump.cx)

1. What is this?

Asmsh stands for assembler shell, and is just like any other shell language you may be using - bash, ksh, zsh, etc - but instead of trying to add more and more high-level drivel on top of the command line, it takes you back to the basics, providing an interpreted instruction by instruction assembly language parser, and some general convenience features.

This might sound as a bad joke (and started as such), but actually makes sense. Asmsh is designed to be hardcore, not hard to use. While not particularly useful for simply invoking your mail client, it can sometimes surpass shells such as bash, thanks to instantaneous access to all possible libraries you have on your machine with a simplified calling procedure and instant prototype hints, or the ability to re-execute or undo commands at any time (except for effects of some syscalls, of course), work with multiple execution workbooks at once, or even save the history of commands in any workbook to a standalone ELF file. The shell features built-in expression evaluation (including floating point arithmetics), a built-in debugger, is probably the best way to experiment with and learn assembly, and a powerful low-level programming aid that allows for very rapid and bug-free deployments. Click here for more information about the implementation.

2. Status

The project is now in prenatal (pre-alpha) stage. As of 11 Feb 2004, all three core components are now largely done. If you would like to join the devel team or suggest something, please let me know; similarly, if you would like to have a look at what is being done, please contact me. Development status:

  - A good assembler / disassembler library that would essentially provide API such as opcodize("mnemonic", *opcode_buf) and mnemonize(*opcodes, *mnemonic_buf); preferably Intel notation. The latter call perhaps with a callback to describe displayed addresses (translate 0xf00 to my_text, etc) - NOW DONE, courtesy of shykta.

  - A decent but compact arithmetic expression evaluator that parses an expression (regular and binary arithmetics, logic expressions, but nothing fancy) and handles floating point arithmetics C-style - NOW DONE, courtesy of tjup.

  - A good readline equivalent that would support custom, preferably customizable tab completion (different for "exec" built-in directive, different for operands) and custom handling of certain keys (such as Ctrl-X to switch workbenches) - NOW DONE, courtesy of c0de.

  - Putting it all together - now started :-)


You are a visitior number 10471526.