Giter Site home page Giter Site logo

masp's Introduction

			  -*- mode: text -*-

MASP - Assembly Preprocessor
============================

MASP is basically just GASP, with a slight modification.  It has
inherited all the features and bugs.  There is no documentation,
unfortunately, becouse it has to be rewritten.  You are left with
whatever you can find for GASP, but read ``Changes from GASP''.

MASP is being maintained by Johann Gunnar Oskarsson,
   <[email protected]>

See the file INSTALL for installation instructions.

New Features
============

It's now possible to alternate between the old GASP syntax and the new
MASP syntax.  In MASP mode, do \gasp to change, and in GASP mode do
.masp to change back.  Files start in MASP mode.

GASP mode changes the prefix char into '.', overriding the command
line parameter.

MASP mode changes the prefix back into what was passed on the command
line.

It is possible to check what mode we're running with \ifmode.

   \ifmode masp	  # True if in masp mode
   \ifm	   gasp	  # True if in gasp mode (short for \ifmode)
   \elseifm	  # Else....
   \endifm	  # End

The underlying assembler can give better error messages if masp is
passed the --line-numers or -l.

Changes from GASP
=================

MRI comptatibility mode and Alternate syntax have been depricated.
All new and changed code will not take them into consideration.

There is now a command line parameter to change the default directive
prefix, -P and --prefixchar.  Do 'masp --help' for details.

Directives now start with \ instead of . by default so that they no
longer conflict with the underlying assembler.

The prefix for different bases has changed, instead of something like
B'0011 for binary, it's now 0b0011, case insensitive.

* 0a is ascii (see below)
* 0b is binary
* 0q is octal
* 0h is hexadecimal
* 0d is decimal

ASCII conversion only applies to the next char, so 0aAB will become
65B.

Prefixes such as 0a are left alone when standing on it's own, that is
not followed by what might be a number, currently whitspace and the
comment character.

Numbers prefixed with 0x are left alone, the assembler can usually
handle that.

MASP does not change anything inside comments, so commenting out
syntax errors actually helps.  Any violation of this rule is
considered a bug!

MACROS
------

Use macros with care, this feature is being revised and some bugs may
creep up.  It's adwised agains using comments with macros, both when
defining and calling.

The \macro directive has been redefined a little, now commas are
required between arguments, both when defining and calling.

	 \macro	 foo bar, baz
	 add	 \bar, \baz
	 sub	 \baz, \bar
	 \endm

Defines a macro called foo, that takes two arguments, bar and baz.
Argument names are prefixed with \ inside macro definitions.

Called like this "foo $0, 1 << 3" it will expand into:

        add      $0, 1 << 3
        sub      1 << 3, $0

Commas ',' and backslach '\' can be escaped when passed as macro
arguments with '\'.  String literals (marked by " and ')are passed as is, but since \
means escape inside them, you'll have to escape it to pass it along.

T.i. to pass "\n" to the assembler, you'll do "\\n", and to pass plain
comma and backlash to macros, do \, and \\.


BUGS
====

* There is no documentation.

* All the inherited bugs from GASP are still there.

* The portability is probably broken.

* I18n is broken.


Todo
====

* Write documentation

* The package needs to be cleaned up a little bit.

* Fix the bugs ;)

Licence
=======

This program is distributed under the terms of the GNU General Public
License, see the file COPYING for details.

Emacs
=====

Add the following code to your .emacs file to highlight MASP
directives in asm-mode.

;; To highlight MASP keywords in asm-mode
(add-hook 'asm-mode-hook (lambda ()
	  (font-lock-add-keywords
 	   'asm-mode
 	   '(("^\\s-+\\(\\\\[a-zA-Z0-9]+\\)[ \t\n]"
 	      (1 font-lock-type-face))))
 	  ))

Libiberty
=========

The copy of libiberty that comes with this package is probably not
complete, at least it does not include the testsuite (yet) and the
texinfo documentation is not built under any circumstances (yet).
It's not reccomended to use this copy of libiberty with other
software.  Also some source files have been removed from the
distribution.

masp's People

Stargazers

 avatar Michael avatar

Watchers

Michael avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.