2024-10-11

What has changed in Turbo Assembler (TASM) between versions 5.3 and 5.4?

TL;DR Nothing significant. Upgrading doesn’t bring any benefits.

I’ve done binary analysis on tasm32.exe version 5.3 (2000-01-30, part of CBuilder 5 and CBuilder 6) and version 5.4 (2013-12-08, part of RAD Studio XE5, first published on 2009-01-14 as part of RAD Studio 2009), and I’ve found that no functionality has been added, removed or changed (and there were no bugs fixed), except for the version number (both displayed on the console and available in the ??version macro) and the copyright message.

More details about changes between versions 5.3 and 5.4:

  • These Win32 program files were analyzed:
    • tasm32.exe version 5.3, part of C++Builder 5 and 6, 188416 bytes, MD5 e6e4dce5bf676419dab8ae09d312d0df, SHA256 27f8374042ead17f0bfbedecdea54686affd53d43252a8d5d3fe356ae19fbd48.
    • tasm32.exe version 5.4, part of RAD Studio XE5, 194936 bytes, MD5 4ffa43fb80e81c962cee8521c6fe715a, SHA256 53be0e0e2cb5d773299d3681ba68d5334a0041fb24283b0ced7af4ce59bbe0db.
  • These aspects are the same:
    • Win32 DLL imports (function names and their import order).
    • Unpadded size of .text, .data (except the copyright message length) and .reloc, but not .bss.
    • Number of relocations in .reloc. (This is a signal indicating that the code can be the same.)
    • ASCII string literals in .data, except for the version number and the copyright message.
    • Call locations of import table entries (e.g. __imp_CloseHandle) and import wrappers (e.g. CloseHandle). (Thus it calls API functions from the same places.)
    • .text+.data (excluding .bss), ignoring specific address values pointing to .bss, except for version number and copyright and a single dword (DATA:0042887E).
  • These aspects are different:
    • Value of ??version: 0503h vs 0504h.
    • File size: 188416 bytes vs 194936 bytes.
    • File last-modification time (mtime): 2000-01-30_22:00:00 vs 2013-12-08_00:55:00.
    • Version number: Turbo Assembler Version 5.3 vs Turbo Assembler Version 5.4.
    • Copyright message: Copyright (c) 1988, 2000 Inprise Corporation" vsCopyright (c) 1988, 2010 Embarcadero Technologies, Inc.".
    • Win32 PE .exe signature: missing vs present.
    • .bss size (measuring from the start of the first zero-initialized array of 0x80 dwords): (0x42f852-0x429228 == 0x662a) vs (0x430a0e-0x429232 == 0x77dc).
    • The dword at DATA:0042887E is different: 0x5000601 vs 0x5040001. It looks like a version-dependent constant.
    • In-file and in-memory offsets of some labels outside .text. (Labels in .bss have changed. Labels in .data have changed only because the copyright message length has changed.)

More information about Turbo Assembler (TASM) history: