Skip to content

v2.16

Compare
Choose a tag to compare
@Baron-von-Riedesel Baron-von-Riedesel released this 14 Nov 08:11
· 56 commits to master since this release

14.11.2022, v2.16:

Bugfixes:

  • format mz: in the binary map of listings, the RVA of segments belonging
    to a group may have been incorrect, since the group's align adjustment
    was ignored; see grpalign.asm.
  • symbol $ is internally marked as assembly-time variable - this caused
    fixup problems in OMF format; see fixup6.asm.
  • invoke directive, 32-bit code, "ADDR": if the address of a symbol
    in a 16-bit segment was to be pushed, just a WORD was pushed ( Masm is
    buggy, pushes a DWORD, then a WORD ); see invoke41.asm.
    In the "reverse" case, that is, if the address of a symbol in a 32-bit
    segment was to be pushed as a WORD in a 16-bit code segment, a DWORD
    was pushed instead; see invoke43.asm.
  • invoke directive, 32-bit code, "OFFSET": if the address of a symbol
    in a 16-bit segment was to be pushed, just a WORD was pushed ( Masm emits
    an error in this case - this is now done as well ); see invoke42.asm.
    The "reverse" case ( 16-bit code, address of a symbol in a 32-bit
    segment to be pushed ) must also be rejected; see invoke44.asm.
  • invoke directive, "ADDR", "far ptr" modifier for vararg arguments: the
    modifier was ignored, so that no segment part was pushed; see
    invoke45.asm & invoke46.asm.
  • invoke directive, ptr types: invoke might have emitted error "argument
    type mismatch" for arguments of type MT_PTR if their distance didn't
    match the one from the memory model; see invoke47.asm - invoke52.asm.
  • externdef directive: if the symbol was already defined but neither
    internal nor external, no error was emitted; see extern16.asm.
  • pointer to data did ignore default distance of memory model; see
    dsize.asm.
  • option -pe: .data and .data? sections weren't merged; see pe11.asm.
  • option -pe: if a section with initialized data (.reloc) followed a .data?
    section, space for the .data? section was reserved in the binary; see
    pe11.asm.
  • if the difference of 2 labels ( at least one is a forward reference ) is
    used as operand for another op ( shift ), error 'constant is expected'
    may have occured; see forward9.asm.
  • option -pe: binary without relocations got too long because the (empty)
    .reloc section wasn't removed; see pe12.asm.

Other changes:

  • option -pe: allow imports by number; see pe10.asm.
  • option -Zg: increased Masm compatible codegen for hll expressions; see
    hll4.asm.
  • warning "Prologue not at PROC start" (level 3) added if the procedure's
    prologue isn't generated at the procedure's start address; see
    invoke53.asm.
  • option -pe: default image bases changed to 0x10000000 for PE32 dlls,
    0x140000000 for PE64 exes, 0x180000000 for PE64 dlls (MS link compat).
  • error 2058 ( "magnitude of offset exceeds 16-bit" ) changed to a warning
    ( level 3 ); see offset15.asm & offset16.asm.
  • if option -Zg is on, OPATTR is to return language bits for procs/protos
    only; see opattr10.asm.