Errore. Impossibile elaborare la query di ricerca.

Importante: Questo FAQ è stato tradotto automaticamente dal nostro programma di traduzione. La FAQ originale si trova qui. SBC fornisce queste informazioni senza alcuna responsabilità per la sua correttezza e funzionalità e non si assume la responsabilità di essere completa o tradotta correttamente.

Perché è diverso come nel mio codice IL tipo di costante nel codice compilato?

FAQ #100129

Il compilatore imposta automaticamente il corretto tipo di costante se non corrisponde all'istruzione.

 

Nel set di istruzioni PCDs ci sono due diversi tipi di costanti: il 32 bit lungo "costante" e i 14 bit lunghi "costante K" (per informazioni più precise, leggere le FAQ #100123 a questo argomento) che vengono utilizzati in modo diverso:

  • Alcune istruzioni (ad esempio le istruzioni di caricamento LD, LDL e LDH) richiede un valore senza un codice di media. In questo caso può essere inserita solo una "costante". Una "Costante K" WAN ' t adatta qui perché "K" è un tipo di supporto.
  • Altre istruzioni (ad esempio l'istruzione-CMP) richiede un codice di media. In questo caso può essere utilizzata solo per la costante di tipo "K costante". La "costante" non ha nessun codice di mezzi così esso Wan ' t adatta qui.

Nonostante questa regole è possibile utilizzare questo tipi costanti nel codice IL come si desidera. Questo è possibile solo perché il compilatore sostituisce il tipo sbagliato di costante di quella giusta automaticamente. Per esempio:

In IL sono scritti seguenti linee:

CMP  

R 0

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

Il codice che verrà scaricato in PCD dopo compilazione assomiglia a questo:

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 correzione automatica del tipo sbagliato di costante funziona anche per il parameterdefinitions di una chiamata di FB. Cioè è possibile definire un "K costante" come parametro di una chiamata FB nonostante all'interno di questo il parametro di riferimento è chiamata da un'istruzione che non consente un parametro di tipo "K Constante" di FB:

CFB 0
R 0
K 1
K 2 Il compilatore sostituisce K 2 con 2, perché...
... ... ...
FB 0
CMP = 1
= 2
LDL = 1
= 3 ... .a LDL-istruzione non consente la "costante K"

Naturalmente la correzione non può essere fatto se il FB-parametro definito viene chiamato due volte dentro il FB e la costante-tipo consentito è diverso. In questa caso PG5 versione > = 1.3 interromperà la compilazione con un messaggio di errore "parametro FB ha contesto male":

CFB 0
R 0
K 1
... ... ...
FB 0
CMP = 1 Una CMP-istruzione richiede un tipo di supporto...
= 2 ... .for la seconda codeline
LDL = 1 Un'istruzione di LDL non consente un tipo di supporto per il...
= 2 ... Second codeline (ma "= 2" è un "K costante") = > abortire

Nota che nelle versioni PG5 < 1.3 il compilatore non rileverà il conflitto cosa provoca strani comportamenti del vostro PCD!

 

Categories

Local FAQ Deutschland / SEdit (IL programming)

Last update: 24.05.2015 03:58

First release: 11.06.2004 14:08

Views: 6774

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