ASM |
Assembleur |
---|---|
Delphi/Kylix/Lazarus |
Syntaxe
ASM InstructionAsm [ Séparateur InstructionAsm ] END |
Paramètres
Nom | Description |
---|---|
InstructionAsm | Ce paramètre permet d'indiquer n'importe quel instructions assembleur correspondant au microprocesseur destinataire, soit normalement des instructions Assembleur 80x86. |
Description
Cette instruction permet d'intégrer des instructions en ligne assembleur dans le code source Pascal.
Remarques
- Un bloc asm est une instruction que vous pouvez utiliser n'importe où pour appeler une instruction Pascal ou un bloc, tel que le corps d'un sous-programme.
- Vous pouvez faire référence aux noms de variables dans le bloc d'assemblage et accéder aux étiquettes déclarées ailleurs dans la procédure. Ne sautez pas dans la boucle si vous ne savez pas ce que vous faites. Une étiquette commençant par un signe «@» est locale dans le sous-programme.
- L'assembleur intégré de Delphi a tendance à prendre du retard par rapport à la technologie des microprocesseurs. Vous ne pouvez donc généralement pas compter sur les jeux d'instructions les plus récents et les plus performants. Au lieu de cela, vous pouvez utiliser les directives «DB», «DW» ou «DD» pour compiler manuellement les codes d'opération.
- Un bloc asm peut modifier les registres EAX, EBX et EDX, mais doit conserver les valeurs de EBX, ESI, EDI, EBP et ESP. En règle générale, vous ne devez pas supposer que les registres contiennent des valeurs spéciales, mais si vous faites attention, vous pouvez accéder aux paramètres d'un sous-programme dans leurs registres. Reportez-vous aux directives de convention d'appel (cdecl, pascal, register, safecall et stdcall) pour savoir comment les paramètres sont transmis à un sous-programme.
- L'écriture manuelle du code d'assemblage vous donne rarement de meilleures performances. La raison la plus courante d'utiliser un bloc asm est d'utiliser des instructions n'étant pas disponibles dans Delphi nativement, telles que l'instruction CPUID par exemple.
Exemples
Voici quelques exemples typiques de l'utilisation de cette fonction :
on obtiendra le résultat suivant :
EAX = 2EBX = 1
Voici un exemple de la fonction d'API de Windows du nom de «GetCurrentProcessorNumber» sous un système d'exploitation Windows XP Professionnel à l'aide d'un code source avec un compilateur «Delphi 3» :
Dernière mise à jour : Mercredi, le 18 février 2015