-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathhistory
More file actions
2075 lines (2012 loc) · 113 KB
/
Copy pathhistory
File metadata and controls
2075 lines (2012 loc) · 113 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
vasm history
=============
- 2.0f (10.07.26)
o Local symbols could become unavailable when defined after a PC-symbol
expression or a directive dealing with the current PC. Fixes a regression
from last version, V2.0e.
o New option -ctrace to enable tracing of conditional assembly.
o New option -iserror=<n> to turn a warning into an error message.
o And-operations with a local label are allowed, as long as the constant is
less than the section's alignment where the label resides.
o All output modules should handle uninitialized space properly.
o Print relocation type name instead of the number in output module errors.
o Fixed alignment of addresses which have their MSB set.
o Fixed potential memory corruption bug with more than 32/64 sections while
referencing label1-label2 from a different section.
o m68k: B<cc>.L is accepted with a warning as B<cc>.W in 68000 mode (for
compatibility with very old 68000 sources).
o m68k: Command line option -opt-allbra must not be reset by the directive
opt o-. It should still be present after branch optimization is reenabled
with opt o1+.
o m68k: Option -opt-jbra (directive: OPT ob+) should not be restricted to
convert external references only.
o m68k: Fixed regression from V2.0: An optimization of an absolute
destination to 16-bit PC-relative was no longer detected (e.g. 68020+ CMP).
o m68k: Added missing Devpac2/3 opt directives: e, y, z, alink, amiga,
even, hcln, inconce, line, list1, mex, traceif, where list1 and mex have
currently no function.
o m68k: Devpac-compatibility mode has to report word-accesses with odd
absolute operands by default (-warnunaligned, opt e+).
o m68k: -warnunaligned should not have any effect for LEA and PEA instructions.
o m68k: Sections with <type>_P should cause an error with Devpac-compatbility.
o m68k: Added missing optimization of adda/suba #-x,An to subq/addq #x,An,
when x is between -8 and -1.
o m68k: -showopt and OPT ow+ print the total number of optimizations and
translations after the last pass.
o m68k: Apollo: move.l Bm,An and Am,Bn should not be allowed.
o jagrisc: Pseudo instructions AJR and AJUMP ensure that a JR or JUMP
instruction is 32-bit aligned (required for working with main memory).
Also -opt-jr works with AJR and translates into AJUMP when needed.
o 6809: Konami2 ISA allows X, Y, S, U as the offset register for direct and
indirect addressing.
o 6809: Fixed register parser to work with identifiers which start with a
register name.
o mot-syntax: Allow FEQU without size extension.
o mot-syntax: Fixed ODD directive. Finally.
o std-syntax: Support infix operator ! for bitwise Or-Not (gas compatibility).
o std-syntax: boolean true should be -1 not 1. But !0 is still 1.
o oldstyle-syntax: Symbols with assignment directives may always be written
with leading whitespace in default mode. Only with -i (ignore trailing blanks
in operand) you have to use -spcequ to enable that feature.
o madmac-syntax: New directives: du.b, du.w, du.l to declare uninitialized
space.
o madmac-syntax: Added align directive from rmac, which can optionally
specify a 16-bit fill value.
o madmac-syntax: Added a standard section directive for more flexibility.
o hunk-output: New option -hcln, to select HiSoft HCLN line debug output,
instead of default SAS/C line debug.
o tos-output: Fixed addends for SD- and PC-relative relocations in DRI objects.
o o65-output: Better range-check for 8-bit absolute relocations.
- 2.0e (24.02.26)
o Fixed -nocase option for symbols, which was broken in last release.
o New output module "aof" for the ARM/Acorn Object Format, used for example
by Acorn and 3DO.
o New cpu backend for Wozniak's Sweet16 pseudo CPU (also useful as a simple
tutorial backend).
o Fixed ".." include paths and misdetection of paths starting with '/' as
being absolute for AmigaOS hosts.
o ARM: Support for automatic literal pools, when using the '=' operand-prefix
with LDR, to load any constant or label addresses to a register. Includes
optimization to MOV or ADR, if possible.
Literal pools are dumped with the ltorg directive, or automatically at
the end of any section.
o ARM: Alternatively permit an SWI immediate operand with '#'.
o m68k: Register symbol definitions should be case-insensitive in Devpac
compatibility mode.
o m68k: Apollo: Adapted MOVEIW opcode for latest cores.
o 6809: Fixed branch optimization/translation (-opt-branch), which was broken
since the introduction of Konami-support in V2.0c.
o jagrisc: CPU-specific directives (.equr, etc.) with a leading dot were no
longer recognized since V1.8k, when no other dot-prefixed directive was
used before and the syntax module was "madmac".
o std-syntax: ELF visibility types: .hidden, .internal, .protected.
o oldstyle-syntax: ASSERT and FAIL directives should not create a default
section if no section exists at that point.
o oldstyle-syntax: New option -spcequ removes the restriction that equate
symbols have to start on the first column.
o oldstyle-syntax: Add COND and ENDC directives for compatibility.
o elf-output: Support for visibility types.
o tos-output: Alignments > 32 bit in data or bss could lead to corrupt output.
o xfile-output: Alignments > 32 bit in data or bss could lead to corrupt
output.
- 2.0d (23.11.25)
o Improved performance of expression evaluation.
o New output module "coff" for writing COFF object files. Currently supported
are m68k, x86, PPC and ARM. Contributed by Jean-Paul Mari.
o Added indirect symbols by exporting equates pointing to an imported
destination symbol. Currently supported by the output modules VOBJ and a.out.
o -chklabels option is the default now. You can still disable the warnings.
o List symbols sorted by their unsigned value.
o Fixed internal error with non-case-sensitive macro redefinitions.
o m68k: Apollo: Optimize ANDI.L #$ff/ffff,Dn to EXTUB/W.L Dn.
Optimize CMP.L #x,<ea> to CMPIW.L #x,<ea> (with -32768 <= x <= 32767)
and ADD/SUB.L #x,<ea> to ADDIW #x,<ea> (negated x for SUB).
o m68k: Apollo: added LPSTOP.
o PPC: Set address size to 8 for 64-bit CPUs. Fixes some output formats.
o ARM: Allow any type of immediate constant, like characters.
o jagrisc: Fixed -opt-jr. Operands for the JUMP were swapped.
o jagrisc: Use natural default alignment for 32 and 64-bit data.
o mot-syntax: Include ds.p, blk.p, rs.p, etc. for completeness (same as .x).
o aout-output: Fixed PC-relative relocs on a different local section.
o aout-output: New option -aoutalign to change the default section alignment.
o aout-output: Indirect symbols.
o vobj-output: No longer write local symbols with -nosym option.
o vobj-output: Indirect symbols.
- 2.0c (14.07.25)
o Fixed output of the last byte in a CPU's address space for multiple
output formats allowing absolute addressing: gst, ihex, pap, srec, woz.
o Try to convert 128-bit expressions to the backend's native address size
when possible, while parsing it.
o Support left and right shift operations using a shift-count larger than
the backend's native address size.
o Defining symbols which were declared as externally defined is no longer
an error but a warning, as this is usually harmless.
o Fixed possible internal error when defining a label on the same line as
a section directive.
o m68k: Reverted change from V2.0: out of range warnings have become errors
again. These checks can be disabled by multiple options and directives.
o m68k: Improved error messages for quick-immediate and shift-values.
o m68k: Huge (128-bit) expressions are allowed in immediate 8/16/32-bit
addressing modes when the final value fits or when range-checking was
disabled.
o m68k: Apollo: Disabled illegal optimization of ADDI.B #n,An into ADDQ.
o m68k: New option -warnunaligned to warn about accesses to odd addresses.
o 6809: -konami2 option now enables the original instruction set (rev. 052001),
while the extended instruction set for later revisions is available via
-konami2ext (e.g. rev. 052526, 053248).
o jagrisc: New option -opt-jr=<n> automatically translates out-of-range JR
branches into MOVEI plus JUMP, using Rn as a temporary register.
o jagrisc: New option -no-opt disables all standard optimizations.
o jagrisc: Optimize MOVEI to MOVEQ when possible (constant from 0 to 31).
o jagrisc: Fixed JR/JUMP with externally defined CC.
o jagrisc: Allow relocations for LOAD/STORE (Rn+x), but note that there are
still errors when x becomes 32.
o mot-syntax: -devpac compatility automatically disables warnings for xref
on defined symbols and xdef on undefined symbols.
o oldstyle-syntax: Fixed data directives with comment characters (for example:
db 1,';',2).
o vobj-output: Fix handling of section sizes which have the MSB set.
o bin-output: New option -join implements a mini-linker for multiple sections.
- 2.0b (21.04.25)
o New CPU backend for the SPC700, as used in the SuperFamicom and SNES for
sound processing.
o New option -no-msrcdebug to disable source level debugging within a macro
context (MSOURCE directive in mot-syntax).
o Fixed potential crash with NOLIST directives, when listing file is
enabled (new bug since V2.0).
o Assign a relocated org address to labels already in the parser pass to
make conditional assembly (sort of) work.
o Fixed DWARF output for advancing the state machine by 15 * instruction size.
o m68k: Allow Apollo immediate FPU instructions with a third operand again
(broken since V2.0).
o 6502: Fixed external branch label references.
o 6502: Fixed Mega65 32-bit indirect instructions (broken since V1.9a).
o 6809: Added Konami-6809 support, used on arcade boards (patch submitted
by Jim Westfall).
o 6809: Fixed two-byte opcodes with the MSB in the first byte set (for example
HC12 TAP).
o mot-syntax: The rept directive allows for an optional counter symbol name.
o oldstyle-syntax: The label field allows preceding whitespace now, provided
it is followed by a ':', an '=', or an assignment directive (EQU, SET).
o oldstyle-syntax: Allow anonymous labels together with multiple statements
per line (Z80).
o oldstyle-syntax: ascii does not null-terminate strings. asc is not the
same as byte.
o oldstyle-syntax: The size of multi-byte data and space directives depends
on the target CPU now. For example long is 24 bits for 6502/65816.
o oldstyle-syntax: defp uses the target's address size, like da and addr.
o oldstyle-syntax: fdb doesn't define words but double-bytes (whenever that
matters).
o oldstyle-syntax: New directive dl (long word).
o oldstyle-syntax: New directives with fixed bit-size for forming constant
data and space: di8, di16, di24, di32, di64, ds8, ds16, ds24, ds32, ds64.
o oldstyle-syntax: The rept and repeat directives allow an optional second
argument to specify the name of an iteration symbol to use.
o hunk-output: -kick1hunks ignores section memory flags except CHIP and FAST
with a warning.
- 2.0a (30.12.24)
o Fixed bad path in source level debugging information, when the initial
source file and an include file were based on the same "compile directory".
o Get rid of C99-round() dependency.
o Fixed empty strings, which were broken in V2.0. They should not generate
any data.
o When position-independant code is requested (-pic option) the assembler
defaults to relocatable mode (to be able to detect violations).
o Allow 64-bit (or more) expressions with absolute label addresses.
o 6502: Additionally allow BRK with an immediate 8-bit operand.
o 6502: Operand prefix character '?' can be used to select the Memory/Bank-ID
where the referenced symbol resides. Requires the use of VOBJ and vlink.
o mot-syntax: A double colon after the label also exports RS symbols now.
o madmac-syntax: New directives: ifdef and ifndef (just for convenience,
they are no official MadMac directives!).
o madmac-syntax: Fix problem with print-directive when string is empty.
o oldstyle-syntax: Fixed usage of '$' as current-PC symbol for Z80, which
was broken since V2.0.
o oldstyle-syntax: Fixed definition of structure offset labels, which
should be referenceable by structname.offsetname. Broken since V2.0.
o hunk-output: Fixed output generated by Databss directives (like DX in
mot-syntax). Broken in V2.0.
o hunk-output: -linedebug: do not generate multiple entries per line.
- 2.0 (13.10.24)
o Support for architectures which have bytes with more than 8 bits.
o Output formats bin, ihex, srec, test and vobj currently support >8-bit bytes.
o New options -obe and -ole to define the endianness of target-bytes in
binary output.
o New options -ibe and -ile to define the endianness of target-bytes in
binary includes (incbin).
o New option -underscore adds a leading underscore to all imported and
exported symbol names.
o New option -relpath to treat all include paths as relative first,
even when starting with '/' or '\'.
o Reworked relocations and added the option to define their signedness.
o New CPU backend for unSP (micro-nSP), having 16-bit bytes. Contributed
by Adrien Destugues.
o New CPU backend for the FPGA-CPU HANS, using 32-bit bytes. Contributed
by Yannick Stamm.
o New output module "pap", which outputs MOS Paper Tape files, as
documented in the KIM-1 User's Manual. Contributed by Dimitri Theulings.
o When printing error messages in macros, also print the source text line
calling the macro.
o A macro redefinition prints a warning with the previous definition.
The old macro is correctly replaced.
o Also warn about initialized space atoms (.space, etc.) in BSS sections.
o Workaround for a Windows bug, when reading a source text from stdin
directly via the terminal.
o Fixed output of 64-bit symbol values in vobjdump.
o Directives to suppress listing file output (like NOLIST) will no longer
appear in the listing file.
o Fixed string constants (in immediate addressing modes) with non-ASCII
characters.
o Fixed potential buffer overflow when generating a section name for
ORG directives (since V1.9f).
o Output modules now show the source line for unknown relocation errors.
o m68k: Most out of range errors have now become warnings.
o 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).
o 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).
o m68k: Float-constant optimization (OPT of, enabled by default) now also
supports integer constant optimization to 16-bit.
o m68k: Command line options of the form -opt-<option> execute a
Devpac-style option in the same way as an OPT directive at the top
of the source text.
o m68k: New options -warnabs16 and -warnabs32 to show a warning when
accessing absolute 16- or 32-bit addresses.
o m68k: Fixed assigning another register list symbol with REG/EQURL, which
was broken since V1.9a.
o m68k: REG/EQURL directives optionally allow to specify register lists as a
register mask constant (BAsm compatibility).
o m68k: Add Apollo E-register banking for negx, swap, movex, sCC,
addiw.l, cmpiw.l, rol, ror, roxl, roxr, and perm.
o m68k: Apollo instructions pabsb, pabsw are gone (opcode space will be
reused in future).
o m68k: Apollo fmove.{b/w/l/s/d} En,Em is replaced by floadi and fstorei to
make clear whether the Em target is an integer or floating point register.
o m68k: New Apollo instructions: fmoverz, fmoveurz, moveiw, mov3q, movs,
movz, move2 (updated), clr.q.
o m68k: Do not allow Bcc.B with branch distance -130 for Apollo, as it
would encode as $6xff (opcode for 32-bit branch).
o 6502: Added al/as/xl/xs as aliases for a16/a8/x16/x8 directives.
Added longa/longi as WDC-style aliases for these directives (65816).
o 6502: Absolute 16-bit addressing modes ignore the bank by default for 65816.
o 6502: Optionally allow alternative syntax with immediate operands for MVN,
MVP and PEA (65816).
o 6502: Out of range errors turned into warnings.
o 6502: CPU directive, to define the cpu model.
o 6502: Byte-selector operators are gone and turned into operand prefixes,
according to the official WDC syntax.
o 6502: New option -am to mask all immediate and data values to their
specified size.
o 6502: Hu6280 uses SETDP $2000 to move the zero page for automatic code
optimizations.
o 6502: New option -dpo to generate offset-relocs for zero- or direct-page
accesses.
o x86: Default to 16-bit addressing when -m selects a CPU below 386.
Default to 64-bit addressing with -m64.
o x86: Let the mnemonic's suffix always decide about the operation size,
even when the operand is a label (gas seems to do the same).
o x86: Mask all immediate operand relocations according to their size
(to allow something like movb $label,dest or movw $label,dest).
o x86: Fix macros with size-suffixes (b,w,l,s,q,x). Size qualifiers are
no longer allowed in x86-macros.
o x86: Allow multiple alternating .codeNN directives in the source.
o x86: Add missing prefix when using 32-bit registers in 16-bit mode.
o x86: Fixed relative calls with size suffix (callw, calll) in 16/32-bit mode.
o mot-syntax: Fixed non-zero offset in CNOP, which was broken since V1.7c.
o mot-syntax: TTL sets the listing file page title and not the unit name.
o oldstyle-syntax: MACRO (written in upper case) didn't work with arguments.
o oldstyle-syntax: New ifblank and ifnblank directives may be used to
check whether a macro argument was given.
o oldstyle-syntax: New directive exitmacro to exit recursive macro
invocations.
o oldstyle-syntax: New directive da as an alias for addr.
o oldstyle-syntax: New directive bss to reserve space, like ds or reserve.
o oldstyle-syntax: New directives blkl and dsl for defining space with a
32-bit pattern.
o oldstyle-syntax: Section attributes 'f' and 'z' may be used to designate
a section for far- or near-addressing (e.g. direct/zero-page).
o oldstyle-syntax: Fixed FCC for single characters (no expressions allowed).
o oldstyle-syntax: The closing quote-character (' or ") in single-character
expressions is now optional (compatibility with old Motorola sources).
o oldstyle-syntax: Broken hex-constants with the minus-operator following
the '$' are supported for compatibility reasons.
o oldstyle-syntax: Allow optional colon after a label for macro, equ
and set directives.
o std-syntax: The "true" result of logical operations should be 1 not -1.
o std-syntax: Allow XY' (alternate) registers with Z80.
o std-syntax: The .org directive always defines the absolute address for
subsequent code, as long as no relocatable section was defined (or -gas).
o std-syntax: .ifc and .ifnc directives for comparing strings.
o hunk-output: New option -noabspath to refrain from creating absolute
paths for source line debugging (LINE debug format).
o hunk-output: Automatic source line debugging output (-linedebug) also
includes BSS sections now, unless Devpac-compatibility was specified
(-devpac).
o hunk-output: New options -dbg-local and -dbg-globloc to include local
labels into the debug symbol hunk (HUNK_SYMBOL).
o hunk-output: Warn about odd relocation offsets, which might crash the
AmigaOS loader on 68000 and 68010 systems (suggested by Erik Hemming).
o o65-output: Support low-word relocs in 65816 mode.
o bin-output: Fixed overlapping misdetection with empty org-sections.
o bin-output: Foenix PGX format supports 65C02 and PGZ format supports 32-bit.
o bin-output: New option -coalesced to output org-blocks without padding.
o cdef-output: Do not output internal symbols.
o elf-output: Fixed advancing by more than 63 lines in the DWARF output
(patch by arcanist/EAB).
o tos-output: Fixed alignment problem with DRI object file relocs.
o tos-output: New option -zfile to output Sharp X68000 Z-file executables.
o xfile-output: New option -exec to define the execution label.
o xfile-output: New option -loadhigh to load the executable into high memory.
- 1.9f (10.11.23)
o Fix relative section offset directives, which must be unsigned to work
correctly over the whole target's address space.
o Fixed a few issues with named macro arguments.
o Do not warn about missing references to Common or Weak symbols.
o Binary output modules allow addresses outside of the backend's
address space.
o m68k: MOVEM (An),An/Am must not be optimized into two MOVE instructions.
This was a new bug in V1.9e.
o std-syntax: Fixed binary constant 0b...., which was erroneously mistaken
for a one-digit temporary label destination since V1.9a.
- 1.9e (30.09.23)
o Exit before reading the source (from stdin) when there were errors already.
o Make sure the relocated blocks within all sections are closed after
parsing. Otherwise the first pass may find the section in a wrong state.
o Output modules may define the default section, when no SECTION or ORG
directive was given. "bin", "ihex" and "srec" now default to "ORG 0".
o New output module "woz", which outputs sections as "wozmon" monitor
commands, suitable for ASCII transfer via a serial connection.
Contributed by anomie-p.
o m68k: Improved -opt-movem (OPT om+) optimizations, for MOVEM with two
registers.
o m68k: Fixed Apollo ADD/SUB->ADDQ/SUBQ optimization with AMMX registers.
o m68k: Enabled Apollo FPU instructions using 64-bit data registers:
Fxxx.D Dn,ea, FMOVE.D Fn,Dm, etc.
o m68k: Added missing PC-relative destination addressing modes for Apollo
shift instructions and FMOVE, FMOVEM.
o m68k: Apollo bchg/bclr/bset/btst Dn,An must not be allowed (conflicts
with MOVEP).
o m68k: New Apollo instructions FDBcc.L, DBcc En,lab; EXTUB.L and EXTUW.L.
o 6809: Fixed typo in the opcode for the 6309 LDMD instruction.
o mot-syntax: Allow multiple consecutive relocated blocks within a section.
o mot-syntax: New directives LOCAL and RSEVEN for compatibility.
o mot-syntax: Allow any type of expression for RSSET, SETSO, SETFO.
o madmac-syntax: Allow multiple consecutive relocated blocks within a section.
o oldstyle-syntax: The label defining the size of a STRUCT block may have
been moved into the previous section, or caused a segfault at ENDSTRUCT,
since V1.9b.
o tos-output: Also write absolute symbols (equates) into executables.
o tos-output: New option -szbx to enable unlimited symbol names using the
SozobonX extension.
o bin-output: New option -start to define the start address for the
default org-section.
- 1.9d (23.04.23)
o m68k: Using MOVEQ.L instead of MOVEQ must only disable the warning for
values between 128 and 255, but not allow any value without error.
o mot-syntax: XREF allows no definition and XDEF requires a definition.
o std-syntax: Fixed potential problem with "scratch at end of line"
warnings after a section attribute string.
o oldstyle-syntax: Fixed potential problem with "scratch at end of line"
warnings after a section attribute string.
o tos-output: Reloc-output in executables was broken since V1.9b! Restrict
to 32-bit absolute relocations again.
- 1.9c (29.03.23)
o Reverted a last-minute change in V1.9b, which broke the O65 output module,
used with 6502 and 65816.
- 1.9b (26.03.23)
o Fixed a rare expression evalulation bug. Previous versions may erroneously
evaluate "label - equate" as constant, when the equate is something like
"currentPCsymbol - label".
o Allow a label definition on the same line as a section directive and
warn about it.
o Macro arguments were lost at the second repeat-level inside a macro.
o Syntax modules warn about garbage characters in the operand field,
when the mnemonic doesn't take any operand.
o No longer cut symbol names in a wide-format listing file after 31 chars.
o Error messages on macros and repetitions now always include the
real source file name and line number in parentheses.
o Directives for printing expressions into the console (printv, echo, etc.)
now print undefined symbols as "<undefined>+offset".
o New output module "gst" for GST object files (Atari, GST-assembler, Devpac).
o New output file format "dri" for Atari M68k DRI object files.
o m68k: Experimental Apollo TEX instruction, using a simplified syntax
after a proposal of John H.
o m68k: Apollo extended/compressed Bcc.B displacements in the range of
-256 to 254.
o m68k: MOVEQ.L suppresses any warning about an out of range operand.
o m68k: Allow any size-extension for MOVEQ in Devpac-compatibility mode.
o m68k: Fixed a string-buffer conflict introduced in V1.9a, which occurs
when using local symbols in the label field and operand field
together with some cpu-specific directives, like EQUR, REG, etc.
o m68k: Optimize small data label in 020 base displacement to a 16-bit
offset, or even to (d16,An) when the index is suppressed, provided
that options -sd and -extsd have been given.
o 6502: Some mnemonics could be misdetected as implied addressing mode
when option -i was given: asl, asr, lsr, rol, ror. 45GS02: aslq, asrq,
deq, inq, lsrq, rolq, rorq. WDC02: dec, inc.
o mot-syntax: Do not allow a section with the same name and same type,
but with different memory attributes.
o mot-syntax: New option -nolocpfx to disable local symbols by label-
prefix (usually '.').
o mot-syntax: ELIF directive implements a real else-if.
o mot-syntax: Export equate symbols with double-colon in vasm-native mode.
o std-syntax: Fixed an issue caused by the introduction of one-digit
temporary labels in V1.9a. Labels beginning with _f or _b were
misdetected as forward/backward references to such labels.
o std-syntax: Added missing .elseif directive.
o oldstyle-syntax: All byte-directives (byt, byte, dfb, etc.) increment
the pc by one without any operand. All word-directives (wor, wrd, word,
etc.) increment the pc by two without any operand. Similar to a
"declare storage" directive.
o oldstyle-syntax: Whitespace between a label and its colon are allowed
again.
o hunk-output: Warn about inability of Kickstart 1.x to initialize BSS
sections greater than 256k.
o bin-output: ORIC file names in the tape header are limited to 15
characters and a ".tap" extension is removed automatically.
o bin-output: Added support for the PGX and PGZ format, used by 65816-
based C256 Foenix computers.
o tos-output: Support DRI-format object files. New option: -Fdri.
- 1.9a (02.10.22)
o Reads the input from stdin when no source file name is given.
o Small performance improvements. Tuned hash table sizes. Reduced
memory allocations and deallocations.
o Do not ignore the path from the main source when looking for a file.
o Can build low-memory version of vasm with minimal hash tables, by
compiling with -DLOWMEM.
o Do not allow exporting equates which are based on imported symbols.
o Search for include files in the current work directory first, then
in the compile directory.
o New option -maxpasses to adjust the maximum number of passes while
resolving a section.
o New option -nocompdir to disable compile directory based include file
lookup completely.
o New option -v to print version and copyright.
o m68k: -no-opt option really ovrrides all "opt o" and "opt a" directives
from the source now.
o m68k: Fixed 68030/68851 PMOVE issue with TC and MMUSR, caused by a
conflict with MOVEC control registers of the same name.
o m68k: New Apollo instructions DBcc.L and MOVE2.
o m68k: Fixed Apollo MOVE immediate addressing mode to vector register.
o m68k: Fixed Apollo SUBI banked instruction (one word missing).
o m68k: Added Apollo banking prefix support for MOVE.L Bn,<ea> and
MOVE.L <ea>,Bn.
o m68k: Apollo LSLQ and LSRQ default to a .W operation size when missing.
The remaining AMMX instructions should be .Q.
o m68k: Make sure AMMX 64-bit constants are parsed with full precision.
o m68k: Added missing Apollo FMOVE addressing modes.
o 6502: Added support for the WDC 65816 and 65802 8/16 bits instruction set,
including some new directives for selecting Accumulator and Index width.
o z80: Fix for GBZ80 "ld (c),a" and "ld a,(c)".
o mot-syntax: ASSERT directive.
o mot-syntax: macro arguments within <..> allow additional '>' characters
inside a string without terminating the argument (vasm default mode only,
not for Devpac-compatibility).
o std-syntax: New option -gas for stricter GNU-as compatibility.
o std-syntax: Supports one-digit temporary labels, where the nearest
previous label may be referenced by Nb and the nearest following by Nf.
o oldstyle-syntax: New directives SYMDEPEND and NEEDS. They define a
dependency of the current section from an external symbol, which must
be resolved by the linker.
o oldstyle-syntax: Anonymous labels may be defined with a single ':' and
referenced by ':+' or ':-'.
o hunk-output: Converts NONE-relocs to 8-bit ABS with a warning.
o hunk-output: Improved short-reloc output and work around AmigaOS
LoadSeg() limitations/bugs.
o o65-output: Check bad addends for 8-bit relocations.
- 1.9 (26.02.22)
o Removed inappropriate warning when using equates which are greater than
the target's address size.
o NARG-symbol (number of arguments in macro) can also be made
case-insensitive with the -nocase option.
o Stop parsing hexadecimal escape sequences in strings after two characters.
o m68k: Apollo banking prefix support for most important CPU instructions.
Patch by John Hankinson.
o m68k: Fixed Apollo FPU instructions of the form F<op> En,En,FPn.
o m68k: Non-standard fpu-id didn't work for some instructions. Do not
allow non-standard fpu-ids for CPUs with a fixed internal FPU.
o m68k: EQUR/FEQUR register assignments do not depend on target CPU/FPU
settings anymore.
o m68k: Allow Apollo vector register assignments with EQUR.
o m68k: Supports Packed Decimal floating point constants.
o m68k: New option -no-typechk, with the same effect like the "OPT t-"
directive.
o z80: EI is a valid GBZ80 instruction.
o z80: Warn about extra garbage characters in data operands.
o 6502: Added complete instruction set 65CE02 and all 32-bit MEGA65
extensions.
o 6800: Fixed -m68.. command line options.
o 6809: Avoid problems with PC-relative optimizations using a distance of
+127 or +255.
o mot-syntax: Improved ECHO directive.
o mot-syntax: DC.P directive for Packed Decimal.
o mot-syntax: REPT with a negative count should behave like REPT 0.
o aout-output: Make baserel (small-data) relocations compatible to
GNU-binutils. Value is always based on .data.
- 1.8l (19.07.21)
o ASCII output modules cdef, ihex, srec and test now use the host system's
line endings.
o m68k: Scale factor may be a (constant) symbol.
o m68k: Recognize local register symbols.
o m68k: Fixed -opt-jbra (opt ob+), which caused an illegal instruction error
since the last release.
o m68k: Enabled Apollo Core FPU instructions.
o m68k: Apollo FPU instruction banking prefix support. Patch by John Hankinson.
o jagrisc: Fixed (Rn+0) optimization to (Rn).
o z80: Support for the 12 additional 8085 instructions by Grzegorz Mazur.
o 6809: Added missing LSRW and support for the 6309 F-register (patch by
Jim Westfall).
o 6809: Fixed LDW indexed addressing mode.
o mot-syntax: showoffset for PhxAss compatibility.
o mot-syntax: Fixed DX directive, which was broken in the last release.
o madmac-syntax: ABS directive is no longer available for the jagrisc
cpu backend as it conflicts with the instruction name.
o std-syntax: .int uses the target's address size.
o oldstyle-syntax: addr uses the target's address size.
o hunk-output: Default section name comes from the syntax module now, in
case the output only contains symbols, but no data.
o srec-output: Added -crlf option to enforce CR/LF line endings (submitted
by Grzegorz Mazur).
o ihex-output: Added -crlf option to enforce CR/LF line endings (submitted
by Grzegorz Mazur).
- 1.8k (13.05.21)
o New output modules "o65" and "o65exe" to write object files and
executables for the 6502-family of processors.
o Symbols defined on the command line by -D must be Equates, so they
cannot be modified anymore in the source.
o New default listing file format (wide). The old one can still be
selected by -Lfmt=old.
o Improved listing file output for macros and repetitions. Also their
definitions are now printed.
o New listing file options: -Lbpl=<val>, -Lall, -Llo and -Lni. All valid
for the new wide-format.
o New option -uspc=<val> sets the fill value for uninitialized space
(defaults to zero).
o m68k: Support 64/96 bit immediate FMOVEM.L with two or three control
registers as destination.
o m68k: Fixed misdetection of labels with dots (-ldots) as registers with
size extension (e.g. "(pc.msg,pc)").
o m68k: Fixed Apollo instruction encoding: pcmpgeb, pcmpgew, pcmpgtb,
pcmpgtw. Changed Apollo instruction name: miniterm to minterm.
Patch by John Hankinson.
o m68k: New Apollo core instructions (John): lslq, lsrq, pabsb, pabsw,
storem2, storem3, transilo.
o m68k: Encoding a branch distance of -1 is not allowed for 68020+ CPUs.
o 6502: > and < modifiers may be used to enforce absolute or direct/zero-page
addressing modes.
o 6502: New directive zero or .zero starts a zero-page bss-section, which
makes symbol accesses to this section default to zero-page addressing.
o 6502: Implemented a few 45GS02 instructions (Mega65).
o 6809: Absolute constant offsets > 32767 are now negatively sign-extended
and will allow addressing mode optimizations.
o oldstyle-syntax: Besides .text, .data and .bss, also text, data and
bss section names are automatically recognized and provided with
correct attributes.
o oldstyle-syntax: -sect option can be used to enable the section
directives: text, data and bss. By default text and data directives
create string/data constants.
o oldstyle-syntax: Sections named .zero or zero get the zero-page
flag for 6502.
o oldstyle-syntax: Fixed crash with text/fcs directives without a string.
o bin-output: Added support for ORIC machine code file headers.
o bin-output: Uninitialized space is not written. At the moment it can only
be created with *=*+n directives in some syntax modules.
o tos-output: Report undefined symbols with source line number.
o xfile-output: Report undefined symbols with source line number.
- 1.8j (31.12.20)
o New CPU backend for the PDP-11 architecture.
o Fixed alignments in relocated-org blocks within a section.
o 6809: 16-bit branch with a negative distance of 127 bytes (-130 encoded)
was erroneously optimized to 8-bit branch (-129 encoded). Fixed.
o 6809: .dpage directive conflicts with .dpage section in std-syntax and
was renamed to .direct.
o 6809: Support label differences in immediate addressing modes, which
generate a pc-relative relocation.
o m68k: Fixed inappropriate cpu-type errors, when using directives or
macros starting with "mc", "mcf" or "ac".
o m68k: Illegal opcode extensions should also be reported in Devpac-
compatibility mode. Illegal opcode extensions for unsized instructions
are still ignored with -devpac.
o mot-syntax: pushsection and popsection directives.
o mot-syntax: msource directive to control source level debugging within
a macro (submitted by Soren Hannibal).
o mot-syntax: if1, if2, ifp1 directives for compatibility with a warning.
o oldstyle-syntax: org $addr works again for Z80.
- 1.8i (28.09.20)
o New CPU backend for 6809, 6309 and 68HC12.
o New output module "cdef" to write all absolute symbols as a series of
#define directives for inclusion in a C source.
o Do not read a source file with the same name from the CWD, when the
real source is actually located in a sub directory!
o Show an error when no numerical term follows a base-prefix.
o Do not show expression-evalulation errors before the final pass
(e.g. division by zero).
o New option -nomsg= to disable specific informational messages.
o Define an internal symbol depending on the host file system in use
(__UNIXFS, __AMIGAFS, __MSDOSFS).
o Fixed crash when printing errors from files with an absolute path.
o m68k: New option -extsd to allow small data with 020 extended addressing
modes.
o m68k: Disabled most of the new MOVE.L #x,Dn optimization from V1.8h for
ColdFire, which doesn't support .W and .B operations.
o m68k: Fixed encoding of ([...],ZRn,...).
o m68k: Fixed PFLUSHR immediate addressing mode.
o m68k: Some PMOVE reg,<ea> erroneously allowed immediate and PC-relative
addressing modes as destination.
o m68k: Allow A0 and A1 as small data base registers (near, -sdreg).
o m68k: External small-data symbol references may have a signed addend.
o jagrisc: Add more predefined condition codes. Now vasm supports the
same condition codes as the SMAC assembler.
o 6502: Fixed branches to external labels.
o 6502: New directive EZP. Like EQU, but use advises zero page addressing.
o 6502: -opt-branch can now also translate/optimize between BRA and JMP.
o ARM: Fixed a problems with auto-rotated immediate values. Now all
possible solutions should be found.
o ARM: Fixed oscillating optimization for ADR/ADRL (-opt-adr).
o ARM: Fixed handling of string/data directives with a single character.
o ARM: Fixed MSR status register bit mask (patch by Luna).
o mot-syntax: -devpac compatibility mode allows dots ('.') in labels (-ldots).
o mot-syntax: Fixed crash when reading a label field including '\' and
followed by a non-identifier character.
o oldstyle-syntax: -ast allows * to start comments in the first column.
o oldstyle-syntax: -i now also works for instructions with no operand.
o oldstyle-syntax: -ldots allows '.' within identifiers.
o oldstyle-syntax: added inline and einline directives from mot-syntax.
o oldstyle-syntax: added FCS directive, which is like FCC but sets the
MSB of the last character.
o madmac-syntax: Added missing .offset and .abs directives to start an
offset-section.
o std-syntax: Added .pushsection and .popsection directives.
o bin-output: Added support for Apple DOS binaries, Dragon DOS binaries
and Tandy Color Computer machine language files.
o vobj-output: Make some backends support larger sections sizes than
their target address allows.
- 1.8h (18.04.20)
o Reworked absolute ORG sections.
o -pic no longer reports references to undefined symbols.
o New option -pad=<value> can be used to define a different padding value
than zero for alignments and for filling gaps between absolute sections.
o Fixed alignment directives. Now also alignments which are not a power
of two are allowed (but probably not supported by all object file
formats).
o m68k: New optimizations for BAsm compatibility: MOVE.L #n,Dn is
transformed into a combination of MOVEQ and SWAP, ADD.W or NEG.W.
o m68k: New optimization flag for size, even when speed suffers. It will
optimize for example MOVE.L #x,Dn to MOVEQ #x>>n,Dn + LSL.W #n,Dn.
o m68k: Fix some situations where an absolute label from an ORG section
should be treated as a simple absolute value (e.g. MOVEQ).
o m68k: New option -nodpc to disallow direct encoding of absolute PC
displacements (also set automatically with -devpac compatibility).
o m68k: Added internal symbols _MOVEMBYTES and _MOVEMREGS for BAsm
compatibility.
o 6502: New directive ZPAGE, to declare a relocatable symbol as being
located in the zero-page, so vasm will use ZP-addressing, even on
external symbols.
o 6502: Allow 32-bit data directives.
o 6502: New option -bbcade for compatibility with the BBC ADE assembler,
contributed by Garry Marshall.
o z80: New option -intel-syntax switches to the old Intel 8080 syntax.
Contributed by Mark Jones.
o std-syntax: .org within a section allows an optional argument to define
a fill-value.
o mot-syntax: A SECTION directive with a single argument is interpreted
as section type when the selected output format does not support
section names (e.g. aout, tos, xfile). Otherwise the type defaults
to code, using the given argument as section name.
o mot-syntax: register list directives (REG, EQURL) also accept a
previously defined register list symbol.
o mot-syntax: Fix segfault/out-of-memory when a macro-argument enclosed in
< ... > is missing the '>'.
o mot-syntax: Allow comment-character directly attached to a macro directive.
o mot-syntax: RORG allows an optional argument to define a fill-value.
o mot-syntax: Only allow valid identifiers for macro names.
o mot-syntax: Fixed string expressions as macro arguments.
o mot-syntax: New directives db, dw and dl for ArgAsm, BAsm, HX68, Macro68,
MaxonAsm, OMA, ProAsm, Cape compatibility. They do not exist in PhxAss-
or Devpac-compatibility mode.
o oldstyle-syntax: The addend in the abyte directive is now a modifier,
where the special symbol ._ works as a placeholder for each expression
from the line.
o oldstyle-syntax: macro definitions and repetitions with -dotdir were
not correctly recognized.
o oldstyle-syntax: Fixed string expressions as macro arguments.
o oldstyle-syntax: New directives fi and str, contributed by Garry Marshall.
o oldstyle-syntax: New directives dsect and dend to implement offset-sections.
o madmac-syntax: Fixed string expressions as macro arguments.
o bin-output: option -atari-com may be used to output Atari 6502 COM files.
o output-hunk: Alignment directives behind DX are allowed.
- 1.8g (04.10.19)
o Do not print informational messages when generating dependencies.
o New option -depfile to specify a file name for the dependency output.
Code generation may happen in parallel in this case.
o Include the compile directory in the path, when printing error messages.
o Treat a subtraction of a label from a constant as constant, when the
label is from an absolute ORG section.
o m68k: -opt-allbra makes sure that branch-optimization is enabled.
o z80: "ld (BC/DE/HL),abs" is an illegal addressing mode.
o mot-syntax: SECTION directive with a single argument is interpreted as
section-type when the output format is "tos". Otherwise the type
defaults to CODE.
o mot-syntax: In devpac-compatibility mode allow '@' in the middle of labels.
o mot-syntax: -phxass compatibility mode allows dots ('.') in labels (-ldots).
o mot-syntax: Added support for Devpac IIF directive.
o output-hunk: Fixed LINE debug hunk output (-linedebug). Now it can
deal with code from multiple sources and the line numbers for
executing macros and repetitions are correct.
o output-hunk: New option -hunkpad=<code> selects the padding code for
code sections to achieve 32-bit alignment. Default to 0x4e71 (NOP)
for M68k.
- 1.8f (10.06.19)
o New option -wfail makes vasm return with an error code not only for
errors but also for warnings.
o 6502: Added missing WDC65C02 instructions (-wdc02): STP and WAI.
o m68k: Warn about DIVxL.L with identical quotient and remainder registers.
o m68k: Do not optimize or translate PC-relative addressing modes when
the referenced symbol is in a different section.
o m68k: RTD operand should be signed.
o m68k: Automatic optimization of absolute to base-relative addressing
(-sd option) must only be done when the target address is between offset
0 and 65535 in the small data section.
o z80: Forbid ixh/ixl operands on one side with h/l on the other.
o mot-syntax: Structure directives (RS, SO, FO) without an offset-expression
are not allowed in Devpac-compatibility mode (-devpac).
o mot-syntax: __LINE__ represents the correct line number again, after it
had been broken in the last version.
o mot-syntax: New directive DX for ProAsm/Barfly compatibility. Used to
create DataBss space in an executable file. Otherwise identical to DS.
o mot-syntax: New option -cnop=<code> sets a two-byte code for padding
CNOP-alignments. Defaults to 0x4e71 for M68k.
o output-hunk: Make sure all unsupported relocations in hunk-executables
are reported. Do not generate an executable with missing relocs.
o output-hunk: Do not pad a code section with 0x4e71 when skipping
DataBss contents at this point (-databss with -Fhunkexe).
- 1.8e (28.12.18)
o New option -dwarf automatically generates line debug information for
source level debugging in DWARF V2 or DWARF V3 format.
o New output module for Sharp X68000 Xfile executables. Can be selected
with the -Fxfile option.
o Repeatedly included files are only loaded once into memory.
o m68k: Avoid wrong branch-optimization info messages with -opt-allbra.
o 6502: Fixed LDA (zp,X) in 65C02 mode (-c02).
o 6502: -wdc02 enables the WDC65C02 extensions, like RMB, SMB, BBR, BBS.
o 6502: Support for Hudson Soft HuC6280 (new option -6280).
o 6502: New directive SETDP to set the current zero/direct-page address
for optimizations from abs to zp addressing modes.
o x86: Fixed crash with SWAPGS, when not supported by current cpu.
o std-syntax: Fixed potential buffer overflow when parsing macro arguments.
o output-hunk: Always try to include the full absolute source-path when
writing LINE debug hunks (-linedebug option).
- 1.8d (20.08.18)
o Repeat-loops with a single line generated a malformatted listing file.
o m68k: Recognize (PC) addressing mode and transform it into (0,PC).
o m68k: Only "fpu 1..7" may enable FPU code generation.
o m68k: -kick1hunks also prevents optimizing from absolute to 32-bit
PC-relative.
o ARM: Fixed instruction alignment in Thumb mode, which was broken since
1.8b (introduction of -noialign option).
o ARM: Fix for immediate operands like cmp r0,#'A' not working properly in
thumb mode (provided by Peter Petterson).
o PPC: tlbld is available as general PPC instruction again.
o z80: SBC addressing modes IX,ss and SBC IY,ss do not exist.
o z80: EX (SP),HL is not supported by GBZ80, but SRL is.
o mot-syntax: Report garbage at end of line for DC directives.
o mot-syntax: Labels with a double colon are automatically exported (xdef).
o mot-syntax: Allow '?' within identifiers, in Devpac-compatibility mode.
o madmac-syntax: Report garbage at end of line for DC directives.
o std-syntax: Fixed \@ (unique id) in macros, which was broken since 1.7h.
o vobj-output: Prevent crash when referencing undefined local symbols.
- 1.8c (15.03.18)
o Relocated ORG blocks within a section were not recognized, when their
start address was 0.
o The count in repeat-directives is always unsigned, even when given as
a negative value.
o Check for target address space overflows.
o Fixed crash when undefining non-existing register symbols.
o A redefined label is no longer a warning, but an error.
o ARM: Fixed compile-error from last release.
o vobj-output: Fixed uninitialized symbol index for internal/local symbols.
o oldstyle-syntax: New directive ROFFS to set the program counter relative
to the start of the current section.
- 1.8b (30.12.17)
o Option -noialign disables the automatic instruction alignment.
o m68k: New Apollo Core instructions (core >=4035.jic), provided by
Henryk Richter.
o m68k: Referencing absolute-short labels and optimizing labels into
absolute short addressing mode is allowed, when the label resides in
an absolute ORG section.
o jagrisc: Fixed MOVE PC,Rn instruction.
o oldstyle-syntax: Internal symbol __RPTCNT can be used as iteration counter
in the inner repeat loop.
o oldstyle-syntax: Numeric absolute symbol expansion is supported for macro
parameters of the form \<symbol>.
o vobj-output: Ignoring internal/local symbols does not work. Now we
create and use section symbols as a relocation reference.
- 1.8a (13.08.17)
o Increased number of fast-optimization passes from 50 to 200, as
very large sources (> 60000 lines), with lots of branches to optimize,
may still have optimization possibilities left after 50 passes.
o Repeat loops with an iterator symbol over an arbitrary sequence of values.
o m68k: New option -sd and directive OPT ON to enable optimizations of
absolute references to the small data section into a base register
relative addressing mode.
o m68k: New option -opt-jbra and directive OPT OB to convert all absolute
jumps to external labels into 32-bit PC-relative branches (68020 and up).
o m68k: OPT O+ in Devpac compatibility mode does not enable PC-relative
optimizations (an explicit OPT A+ is needed).
o m68k: New Apollo Core instructions: PMULA, PMULH, STOREC, UNPACK1632.
o m68k: -m68020up option no longer includes Apollo Core.
o m68k: Devpac OPT Ln (with n=0,1,2,etc. for Atari) is recognized,
although it has no effect at the moment.
o m68k: Suppressed index registers ZRn, which are explicitly written in
the source, are no longer optimized away.
o PPC: -m option to select the CPU model starts working. By default the
instruction set of a 32-bit PPC (G2, G3, G4) with AltiVec is supported.
o x86: Floating point constants (.float, .double) are supported.
o mot-syntax: Optional offset and length arguments for INCBIN
(contributed by Andreas Larsson).
o std-syntax: New directives for gas compatibility: .irp and .irpc.
o bin-output: Fixed another sign-problem while padding between sections.
o hunk-output: Print source line for undefined symbols, when generating
an executable.
o vobj-output: Ignore all internal/local symbols, except "*tmpNNNNNNNN*",
which is required for certain relocations.
- 1.8 (16.05.17)
o External references in ORG or RORG sections are allowed.
o Option -depend only prints relative include file names, while the new
option -dependall prints all included file names, also with absolute paths.
o m68k: Support for Apollo Core 68080 and AMMX ISA.
o m68k: MSP, ISP and MMUSR are no valid 68060 control registers.
o 6502: Fixed potential segfault during zero-page optimization (new since
last version).
o jagrisc: Fixed SHLQ instruction.
o mot-syntax: Make NREF directive work for PhxAss compatibility. Allows
optimization of absolute references to base-relative.
o std-syntax: Labels ending on '$' are only local when all preceding
characters are digits.
o madmac-syntax: Fixed .long directive (which only aligned to even bytes).
o oldstyle-syntax: New options -i (ignore everything in the operand after a
blank), -noc (no C-style constant prefixes) and -noi (no intel-style
constant suffixes).
o oldstyle-syntax: Z80 supports multiple directives or instructions per
line, separated by a ':' character.
o oldstyle-syntax: Fixed parser problem with nested repeat/endrepeat blocks.
o output-hunk: -kick1hunks must not forbid base relative relocs and
references. It was supported by some 1.3 linkers (blink for example).
- 1.7h (14.02.17)
o Implemented a dynamic line buffer. No limitations on line lengths anymore.
o Octal escape sequences are limited to a maximum of three digits.
o Allow assembler text output (echo, printv) in offset sections.
o Print a warning for initialized data in a bss-type section. This already
worked in the past (1.2c and later), but has been lost somewhere.
o Some single-character labels and symbols will be rejected (depending
on the syntax module).
o -maxerrors=0 should print all errors in the source.
o Print expressions in the listing file and the test output in decimal and
hexadecimal form.
o m68k: Immediate- and PC-relative destination addressing modes for 68851
PMOVE are not allowed. PMOVE ea,PCSR doesn't exist.
o 6502: Perform zero-page optimization with a known label from an absolute
section.
o std-syntax: Fixed problem with parentheses in character constants.
o oldstyle-syntax: New option -org=<address> to set the absolute base
address of the program from the command line.
o oldstyle-syntax: Implemented some listing file directives, but without
any function yet: nam, subttl, page, space.
o bin-output: Fixed output section sorting, which didn't work with some
implementations of qsort().
o elf-output: Fixed external references in stabs.
o elf-output: Use a hash table for ELF symbols to speed up the output.
o hunk-output: Optimization to make it faster with many sections.
o test-output: Fixed crash when printing stabs without a value.
- 1.7g (02.11.16)
o Avoid a crash or internal error in some output modules, when an equate
refers to an undefined (imported) symbol.
o m68k: Optimizing/translating to 68020+ addressing modes for MOVEM didn't
work. For example MOVEM (40000,A0) was not automatically translated into
a bd32 addressing mode, but had to be explicitly written as (40000.l,A0).
o m68k: Optimizing MOVEM was not attempted, when using a register list
symbol in one operand and a label in the other.
o m68k: Fixed -opt-movem & -opt-speed optimization of MOVEM with two
registers, which saw a wrong instruction size and moved following labels.
o aout-output: Instructions with more than one relocation were no longer
supported since V1.7f.
- 1.7f (17.09.16)
o Print a warning when a constant is not representable using the target
data type.
o Show warnings or errors when an expression overflows the backend's
address data types.
o Warn about overflows caused by negative expressions in space directives.
o New option -chklabels makes vasm issue a warning when a label conflicts
with a mnemonic or directive name.
o Reworked internal relocation representation.
o m68k: Base-displacement addressing modes and suppressed registers are
allowed for CPU32. Just memory-indirect is illegal.
o m68k: Added FJcc mnemonics for GNU-as compatibility (-gas option).
o PPC: Added complete support for 403, 405, 440, 460, Book-E, e300 and e500
instruction sets.
o 6800: Fixed a bug which suppressed command line options for syntax- and
output-modules.
o 6800: Support for 6801/6803 compatible CPUs added (contributed by
Adrien Destugues).
o ARM: Thumb-mode [PC,#imm] and [SP,#imm] addressing modes were not
recognized.
p ARM: Fixed thumb-mode SP-adjustment instructions: ADD SP,#<9-bit unsigned>
and SUB SP,#<9-bit unsigned> (missing).
o ARM: External subroutine calls in thumb-mode with BL were broken.
o x86: Fixed determining the operation size when last register is %DX.
o x86: 32-bit only instructions failed, when selecting a 32-bit cpu using
the -m command line option.
o x86: Avoid Illegal Relocation error for calls and jumps in absolute mode.
o std-syntax: Data directives do no longer enforce natural alignment, for
compatibility with GNU-as! Use the -align option to keep the old behaviour.
o std-syntax: '0f' is another allowed float-constant prefix for GNU-as
compatibility.
o std-syntax: .stabs should support escape-characters in its string-field.
o std-syntax: Support progbits and nobits section type arguments for ELF
compatibility.
o mot-syntax: Retain the possibility to use multiple ORG directives and
output a real binary file, as before V1.7e. Only an ORG directive
after a SECTION directive is now relocated within that section.
o mot-syntax: Added IFMI (=IFLT) and IFPL (=IFGE).
o mot-syntax: Fixed problems when macro arguments are followed by blanks
and the -spaces option is given.
o mot-syntax: New directives inline and einline, to define an isolated block
for local labels.
o mot-syntax: New directives ifmacrod and ifmacrond to conditionally assemble
a block when a macro is defined or undefined (compatible with the same
directives on the Barfly assembler).
o madmac-syntax: Make ORG behave like in mot-syntax.
o vobj-output: The byte-offset to a relocation now always defines the
base for all relocation calculations (e.g. PC-relative).
o vobj-output: For little-endian the bit position in a byte of a reloc-field
is now counted from right to left. You will need at least vlink V0.15b to
link more complex little-endian relocations (e.g. ARM).
o hunk-output: -keepempty prevents the assembler from deleting empty sections.
o elf-output: -keepempty prevents the assembler from deleting empty sections.
- 1.7e (12.03.16)
o Ability to print the source line also in output module error messages.