DCC64

From RAD Studio
Jump to: navigation, search

Go Up to Delphi Toolchains


DCC64 is the RAD Studio Delphi compiler for 64-bit Windows.

Output Files

File Type File Extension File Format
Executable .exe PE32+
Shared Library .dll PE32+
Static Library .lib OMF
Object .obj OMF

Features

  • Native integer types are 64-bit.
  • Pointers are 64-bit.
  • Dynamic arrays have 64-bit indexes.
  • Floating-point operations can be performed in single or double precision. Extended precision floating-point operations are not supported.
  • SHL/SHR behavior: 32-bit integers are shifted in 32-bit space, 64-bit integers are shifted in 64-bit space.
  • Mixed Pascal/assembly code is not supported.

64-bit Inline Assembler

DCC64 supports 64-bit assembly code, with some limitations. Routines must be written completely in Delphi or in assembler (no mixing is allowed).

Pseudo-ops are provided to manage the stack. These are described in the following table.

Pseudo-op Description

.PARAMS#

Use this pseudo-instruction when calling external functions. This pseudo-instruction maps the function parameters in accordance with the x64 calling convention. When used, a pseudo-variable, @params, is available for passing stack parameters to called functions. Use @params as a byte array where the first stack parameter is @params[32], locations 0-31 represent the 4 register parameters.

.PUSHNV REG

Generates code to save and restore the non-volatile general purpose register in prologue and epilogue.

.SAVENV XMM#

Has the same functionality as .PUSHNV REG, except that .SAVENV XMM# is for non-volatile XMM registers.

.NOFRAME

Forcibly disables the generation of a stack frame as long as there are no local variables declared and the parameter count is less than 4. Use only for "leaf" functions.

See Also