FAQ PascalConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 401, dernière mise à jour : 5 novembre 2017  Ajouter une question

 

Bienvenue dans la F.A.Q. Pascal !

Celle-ci rassemble les réponses aux questions les plus fréquemment posées sur le langage Pascal et tous ses outils de programmation. Si elle n'a pas pour vocation de répondre à toutes les interrogations possibles, elle reste une bonne base de connaissances sur le Pascal, et ne demande qu'à être enrichie par vos expériences personnelles.

Nous vous invitons à proposer vos propres questions/réponses directement dans la FAQ ou, si vous souhaitez apporter une modification à une question/réponse existante, à la poster dans le fil de discussion renseigné ci-dessous.

Nous vous souhaitons une bonne lecture !

L'équipe Pascal.

Commentez


SommaireLes différents compilateursTurbo PascalTurbo Pascal Bugs (2)
précédent sommaire suivant
 

Sur les ordinateurs dont la vitesse du processeur dépasse 200 MHz (donc, toutes les machines actuelles), une erreur d'exécution se produit lors de l'initialisation de l'unité CRT. Lorsqu'il s'agit de déterminer le nombre d'itérations d'une boucle simple pour un nombre donné de cycles processeur (phase d'étalonnage), une erreur de débordement se produit et déclenche une exception interprétée par TurboPascal comme une division par zéro : la fameuse erreur 200. La solution est toutefois très simple, puisqu'il suffit de remplacer le compteur 16 bits par un compteur 32 bits.

Borland s'est toujours refusé à mettre à la disposition du public un correctif officiel. Il en existe toutefois plusieurs patches officieux téléchargeables sur le Net.

Si vous téléchargez Turbo Pascal 7 ci-dessous, vous ne rencontrerez jamais ce bogue, car cette version a déjà été patchée pour vous !

Mis à jour le 7 mars 2004 Eric Sigoillot

Turbo Pascal 7 a été créé peu après la sortie des premiers processeurs 32 bits. Ainsi, il possède quelques améliorations pour ce genre de processeurs : en particulier les opérations sur les Longint sont effectuées si possible à l'aide des registres processeurs 32 bits, pour un gain de performances.
Seul problème : Turbo Pascal n'a pas été conçu pour sauver ces registres. Par conséquent, les registres 32 bits sont toujours détruits, là où les registres 16 bits sont sauvegardés au besoin.

Cela ne pose aucun problème majeur, sauf lors de l'utilisation de gestionnaires d'interruption. En effet, dans ces gestionnaires, il convient de laisser le système en sortant du gestionnaire dans le même état que lors de l'entrée dans le gestionnaire. Or, ce n'est pas le cas avec les registres 32 bits !

Deux solutions sont possibles 

  • Vous pouvez choisir de sauver vous-même ces registres. Pour ce faire, écrivez votre gestionnaire de la sorte :

Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  
{$F+} 
Procedure Gestionnaire; interrupt; 
Begin 
  asm 
    db 66h; pusha   { Sauvegarde des registres 32 bits } 
  end; 
  
  ...                 { Votre gestionnaire standard } 
  
  asm 
    db 66h; popa    { Restauration des registres 32 bits } 
  end; 
End; 
{$F-}
  • Vous pouvez demander à Turbo Pascal qu'il ignore le fait que votre programme tourne sur un processeur 32 bits. Pour ce faire, ajoutez tout au début de votre programme la ligne Test8086 := False; pour simuler un processeur 16 bits.

Mis à jour le 7 mars 2004 Eric Sigoillot

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsables bénévoles de la rubrique Pascal : Gilles Vasseur - Alcatîz -