M1 is the most minimal cross-platform macro assembler possible
Leveraging a few grammar details to provide the user with a rich vocabulary of ways of expressing their
desired output and input; thus eliminating surprise from the generation process.
At it's core is DEFINE MACRO EXPANDED
Where one can define an assembly instruction like: DEFINE INT_80 CD80 and know that everywhere INT_80 is
placed in the input file there will be the hex encoding of that instruction in the output file or if no
output file is specified the output will be send to standard out.
The supported ARCHITECTURES are as follows: knight-native, knight-posix, x86, amd64, armv7l and aarch64.
If you fail to specify an architecture, the default of knight-native will be used.
M1 also supports the generation of 8, 16 and 32bit integers provided they are encoded as !NUM, @NUM or
%NUM respectively. eg !-1, @42 and %8675309 You however can not mix integers with definitions as macros
are always applied first and will not be evaluated further.
Should you wish to specify the bit and byte encoding of the integers to match your target --big-endian
and --little-endian
Should you wish for the output to be something other than hex format, you can specify the exact output
you desire with: --octal or --binary