Consultation d’un tableau en tant que bloc de mémoire
Les données des tableaux sont stockées de manière contiguë en mémoire. Les instructions du fichier (tableau) nécessitent généralement une adresse de démarrage dans un tableau et une longueur, qui déterminent les éléments et le nombre d'éléments que l'instruction lit ou écrit.
CONSEIL:
Si une instruction tente de lire des données au-delà de la longueur d'un tableau, elle lit toutes les données qui s'y trouvent et les traite comme si ces données étaient valides (il ne se produit aucune erreur). Si une instruction tente d'écrire des données au-delà de la fin d'un tableau, un défaut majeur se produit (type 4, code 20).
Ces instructions manipulent les données de tableau sous forme de blocs contigus de mémoire (les autres instructions manipulent les données de tableaux en tant qu'éléments individuels) :
Stockage des données de tableaux par l'automate
Le tableau suivant montre l'ordre séquentiel des éléments dans les exemples d'Affichage d'un tableau sous forme de collection d'éléments.
Éléments d'un tableau à une dimension (ordre croissant) | Éléments d'un tableau à deux dimensions (ordre croissant) | Éléments d'un tableau à trois dimensions (ordre croissant) | |
one_d_array[0] one_d_array[1] one_d_array[2] one_d_array[3] one_d_array[4] one_d_array[5] one_d_array[6] Pour un tableau à une seule dimension, tag_name[subscript_0], subscript_0, s'incrémente jusqu'à sa valeur maximale. | two_d_array[0,0] two_d_array[0,1] two_d_array[0,2] two_d_array[0,3] two_d_array[0,4] two_d_array[1,0] two_d_array[1,1] two_d_array[1,2] two_d_array[1,3] two_d_array[1,4] two_d_array[2,0] two_d_array[2,1] two_d_array[2,2] two_d_array[2,3] two_d_array[2,4] two_d_array[3,0] two_d_array[3,1] two_d_array[3,2] two_d_array[3,3] two_d_array[3,4] Pour un tableau à deux dimensions, tag_name[subscript_0,subscript_1], subscript_0 est maintenu fixé à 0, tandis que subscript_1 s'incrémente de 0 jusqu'à sa valeur maximale. subscript_0 est ensuite incrémenté de 1 (si la dimension 0 est supérieure à 1) et est maintenu fixé pendant que subscript_1 s'incrémente de nouveau sur la totalité de sa plage. Ce schéma se poursuit jusqu'à ce que les deux indices aient atteint leur valeur maximale. | three_d_array[0,0,0] three_d_array[0,0,1] three_d_array[0,0,2] three_d_array[0,0,3] three_d_array[0,1,0] three_d_array[0,1,1] three_d_array[0,1,2] three_d_array[0,1,3] three_d_array[0,2,0] three_d_array[0,2,1] three_d_array[0,2,2] three_d_array[0,2,3] three_d_array[1,0,0] three_d_array[1,0,2] three_d_array[1,0,3] three_d_array[1,1,0] three_d_array[1,1,1] three_d_array[1,1,2] three_d_array[1,1,3] three_d_array[1,2,0] three_d_array[1,2,1] three_d_array[1,2,2] three_d_array[1,2,3] Pour un tableau avec trois dimensions, tag_name[subscript_0, subscript_1, subscript_2], subscript_0 est maintenu fixé à 0 pendant que subscript_1 et subscript_2 s'incrémentent de la même manière que dans un tableau à deux dimensions. subscript_0 est ensuite incrémenté de 1 (si la dimension 0 est supérieure à 1) et est maintenu fixé jusqu'à ce que subscript_1 et subscript_2 atteignent leur valeur maximale. Ce schéma se poursuit jusqu'à ce que les trois indices aient atteint leur valeur maximale. | |
Jerk d'une dimension
Les instructions AVE, SRT et STD disposent d'un opérande Dimension to vary. L'instruction utilise cet opérande pour calculer un décalage, employé par l'instruction pour déterminer les éléments du tableau à lire ou écrire.
Array | Dimension to vary | Décalage |
une dimension | 0 | 1 |
deux dimensions | 0 | dimension_1 |
1 | 1 | |
trois dimensions | 0 | (dimension_1) ? (dimension_2) |
1 | dimension_2 | |
2 | 1 |
Fournir une réponse