Désolé. Votre demande n'a pas pu être traitée.

Important: Cet article est une traduction automatique réalisée par un logiciel. Le texte original peut être lu ici. SBC fournit ces informations sans garantie de l’exactitude ou de la fonctionnalité et n’assume pas la responsabilité de la traduction.

Pourquoi est le type de constant dans le code compilé différentes comme dans mon code de langage intermédiaire ?

FAQ #100129

Le compilateur définit automatiquement le bon type de constant si elle ne correspondre pas aux instructions du fabricant.

 

Dans le jeu d'instructions de PCD, il y a deux types de constantes : le 32 bit long « permanent » et le 14 bit long « constante K » (pour des informations plus précises, lisez la FAQ #100123 à ce sujet) qui sont utilisés d'une manière différente :

  • Quelques instructions (par exemple les instructions de chargement LD, LDL et LDH) requiert une valeur sans un code de médias. Dans ce cas, seule une « constante » peut être insérée. Un WAN ' t « K Constant » entre ici parce qu'il est « K » est un type de média.
  • Autres instructions (par exemple l'instruction CPM) nécessite un code de médias. Dans ce cas, seule la constante de type « K Constant » peut être utilisée. La « constante » n'a donc aucun code de médias il WAN ' t fit ici.

Malgré cette règle, il est possible d'utiliser cette constante types dans votre code de langage intermédiaire que vous le souhaitez. Cela n'est possible parce que le compilateur remplace le mauvais type de constant par celui de droite automatiquement. Par exemple :

À Illinois les lignes suivantes sont rédigés :

CMP  

R 0

0
CMP R 1
K 1
LD R 2
2
LD R 4
K 4

Le code qui sera téléchargé dans PCD après compilation ressemble à ceci :

000004 CMP R 0
000005 K 0
000006 CMP R 1
000007 K 1
000008 LD R 2
000009 2
000010 LD R 4
000011 4

La correction automatique du mauvais type constant travaille également pour les parameterdefinitions d'un appel de FB. C'est-à-dire, il est possible de définir un « K Constant » en tant que paramètre d'un appel FB en dépit à l'intérieur de ce FB appelle le paramètre de référence par une instruction qui ne permet pas un paramètre de type « K Constante » :

BFC 0
R 0
K 1
K 2 Le compilateur remplace K 2 par 2, parce que...
... ... ...
FB 0
CMP = 1
= 2
LDL = 1
= 3 .. .une LDL-instruction ne permet pas de « K-Constant »

Bien sûr, la correction ne peut être faite si le FB-paramètre défini est appelé deux fois à l'intérieur de la FB et le constant-type autorisé est différent. Dans cette version PG5 affaire > = 1.3 arrête la compilation avec un message d'erreur « paramètre FB a mauvais contexte » :

BFC 0
R 0
K 1
... ... ...
FB 0
CMP = 1 Une instruction du CPM exige un type de média...
= 2 .. .pour la deuxième ligne de code
LDL = 1 Une LDL-instruction ne permet pas à un type de média pour le...
= 2 .. .second ligne de code (mais « = 2 » est un « K Constant ») = > abandonner.

Note que dans les versions de PG5 1.3 < le compilateur ne détecte pas le conflit ce qui provoque un comportement étrange de votre PCD!

 

Categories

Local FAQ Deutschland / SEdit (IL programming)

Last update: 26.05.2015 13:20

First release: 11.06.2004 14:08

Views: 6772

The requested software / document is no longer marketed by Saia-Burgess Controls AG and without technical support. It is an older software version which can be operated only on certain now no longer commercially available products.

Download