DCC64

De RAD Studio
Aller à : navigation, rechercher

Remonter à Chaînes d'outils Delphi


DCC64 est le compilateur Delphi de RAD Studio pour Windows 64 bits.

Fichiers de sortie

Type de fichier Extension de fichier Format de fichier
Exécutable .exe PE32+ (EN)
Bibliothèque partagée .dll PE32+ (EN)
Bibliothèque statique .lib OMF (EN)
Objet .obj OMF (EN)

Fonctionnalités

  • Les types entiers natifs sont 64 bits.
  • Les pointeurs sont 64 bits.
  • Les tableaux dynamiques ont des index 64 bits.
  • Les opérations à virgule flottante peuvent être effectuées en simple ou double précision. Les opérations à virgule flottante en précision étendue ne sont pas prises en charge.
  • Comportement SHL/SHR : les entiers 32 bits sont décalés dans l'espace 32 bits, les entiers 64 bits sont décalés dans l'espace 64 bits.
  • Le mélange du code Pascal et du code assembleur n'est pas pris en charge.

Assembleur inline 64 bits

DCC64 prend en charge le code assembleur 64 bits, avec quelques limitations. Les routines doivent être écrites complètement en Delphi ou en assembleur (aucun mélange n'est autorisé).

Des pseudo-ops sont fournis pour gérer la pile. Ils sont décrits dans le tableau suivant.

Pseudo-op Description

.PARAMS#

Utilisez cette pseudo-instruction lors de l'appel de fonctions externes. Cette pseudo-instruction mappe les paramètres de la fonction conformément à la convention d'appel x64. Si elle est utilisée, une pseudo-variable @params est disponible pour la transmission de paramètres de pile aux fonctions appelées. Utilisez @params en tant que tableau d'octets où le premier paramètre de pile est @params[32]. Les emplacements 0-31 représentent les 4 paramètres de registre.

.PUSHNV REG

Génère le code permettant d'enregistrer et de restaurer le registre non volatile à usage générique dans le prologue et l'épilogue.

.SAVENV XMM#

A les mêmes fonctionnalités que .PUSHNV REG, sauf que .SAVENV XMM# est pour les registres XMM non volatiles.

.NOFRAME

Désactive la génération d'un cadre de pile tant qu'il n'y a pas de variables locales déclarées et que le nombre de paramètres est inférieur à 4. A usage seulement pour les fonctions "leaf".

Voir aussi