Entwicklerwerkzeug: vasm 2.0
Frank Wille hat nach elf Monaten Entwicklungszeit das Update auf die Version 2.0 für den modularen Assembler vasm veröffentlicht. Auf Nachfrage hat er für uns einige Kernpunkte der neuen Version benannt:
Die Version 2.0 von vasm bringt einige größere interne Änderungen
mit sich. Die wichtigste ist die Unterstützung von Architekturen mit
mehr als 8 Bits per Byte, während sichergestellt wurde, daß diese
Flexibilität nicht die Performance von vorhandenen Backends verringert.
Zwei neue Backends nutzen dieses Feature bereits: das HANS-FPGA Projekt
implementiert eine CPU mit 32-bit Bytes, und der unSP (Micro-nSP) Core
von SunPlus mit 16-bit Bytes ist eine real existierende CPU, die u.a.
in der VTech V.Smile Konsole eingesetzt wurde.
Das ermöglicht für die Zukunft einige interessante Backends, wie z.B.
Mainframes aus den 50er und 60er Jahren mit 36-bit Bytes, oder aktuelle
MCUs von Microchip mit 12, 14 oder 24-Bit Instruktionen.
Die interne Repräsentation von Relocations wurde überarbeitet.
Einerseits, um beliebige Bits per Byte zu unterstützen und andererseits
kann jetzt zwischen Signed und Unsigned Reloc-Typen unterschieden
werden, sowie eine Schnittstelle, damit Backends eigene Reloc-Typen
definieren können.
Als neue Output-Module gibt es das MOS Paper-Tape Format sowie das
proprietäre Format des HANS-Projekts. Vorhandene Output-Formate
wurden erweitert. Z.B. XFile für X68000 (Startadresse und laden
in High Memory), ZFile wird neu über das TOS-Modul realisiert.
Foenix PGX und PGZ Support verbessert. Viele neue Optionen für
Debugging Output im Amiga Hunk-Format.
Bei den CPUs hat das m68k-Backend wie üblich viele neue Features
und Bug Fixes. Das Apollo-Team hat den 68080 Support auf den neuesten
Stand gebracht.
Aber auch das 6502-Backend wurde komplett überarbeitet, um es
kompatibler zur offiziellen WDC-Syntax zu machen und die Unterstüzung
für die 8/16-Bit 65816 CPU zu verbessern. Momentan ist ein 65816-Backend
für vbcc in der Entwicklung.
Die Änderungen der Version 2.0 im Detail:
Support for architectures which have bytes with more than 8 bits.
Output formats bin, ihex, srec, test and vobj currently support >8-bit bytes.
New options -obe and -ole to define the endianess of target-bytes in binary output.
New options -ibe and -ile to define the endianess of target-bytes in binary includes (incbin).
New option -underscore adds a leading underscore to all imported and exported symbol names.
New option -relpath to treat all include paths as relative first, even when starting with '/' or '\'.
Reworked relocations and added the option to define their signedness.
New CPU backend for unSP (micro-nSP), having 16-bit bytes. Contributed by Adrien Destugues.
New CPU backend for the FPGA-CPU HANS, using 32-bit bytes. Contributed by Yannick Stamm.
New output module "pap", which outputs MOS Paper Tape files, as documented in the KIM-1 User's Manual. Contributed by Dimitri Theulings.
When printing error messages in macros, also print the source text line calling the macro.
A macro redefinition prints a warning with the previous definition. The old macro is correctly replaced.
Also warn about initialized space atoms (.space, etc.) in BSS sections.
Workaround for a Windows bug, when reading a source text from stdin directly via the terminal.
Fixed output of 64-bit symbol values in vobjdump.
Directives to suppress listing file output (like NOLIST) will no longer appear in the listing file.
Fixed string constants (in immediate addressing modes) with non-ASCII characters.
Fixed potential buffer overflow when generating a section name for ORG directives (since V1.9f).
Output modules now show the source line for unknown relocation errors.
m68k: Most out of range errors have now become warnings.
m68k: Out of range 8-bit immediate constants write to all 16 bits of the extension word, with a warning (to be able to simulate the behaviour of some old, faulty assemblers).
m68k: Improved -opt-size optimization for move.l->moveq/lsl, which now optimizes all values below 0x8000 where the highest and lowest bit set does not span more than 7 bits (suggested by Erik Hemming).
m68k: Float-constant optimization (OPT of, enabled by default) now also supports integer constant optimization to 16-bit.