Section courante

A propos

Section administrative du site

getelementptr

Demande l'élément du pointeur
LLVM

Syntaxe

result = getelementptr ty, ty* ptrval{, [inrange] ty idx}*
result = getelementptr inbounds ty, ty* ptrval{, [inrange] ty idx}*
result = getelementptr ty, ptrvector ptrval, [inrange] vectorindextype idx

Paramètres

Nom Description
result Ce paramètre permet d'indiquer la variable recevant l'adresse calculée de l'élément dans la structure de données.
ty Ce paramètre permet d'indiquer le type de l'élément pointé. Cela peut être un type de base (par exemple, i32 pour un entier 32 bits) ou un type plus complexe (comme une structure ou un tableau).
ptrval Ce paramètre permet d'indiquer le pointeur de base à partir duquel le calcul de l'adresse se fait. Ce pointeur doit pointer vers un type de données de type ty.
idx Ce paramètre permet d'indiquer l'index déterminant la position de l'élément dans la structure de données. L'option inrange est un mot clef optionnel, indiquant que l'index est valide pour l'indexation dans la structure. Si l'index est hors des bornes, il peut provoquer un comportement indéfini sans inrange.
* Ce paramètre permet d'indiquer qu'il peut y avoir plusieurs index supplémentaires si la structure est multi-dimensionnelle (par exemple, un tableau de tableaux).
inbounds Ce paramètre permet de garantir que les index sont calculés en ne dépassant pas les bornes de la structure de données. Si l'instruction calcule une adresse en dehors des limites du tableau ou de la structure, un comportement indéfini se produit.
ptrvector Ce paramètre permet d'indiquer qu'il s'agit d'un vecteur de pointeurs, où chaque élément est un pointeur vers un tableau ou une structure.
vectorindextype Ce paramètre permet d'indiquer le type des indices dans un vecteur (par exemple, des entiers ou d'autres types).
inrange Ce paramètre permet d'indiquer que les index sont dans l'intervalle des valeurs valides pour l'accès à un vecteur.

Description

Cette instruction permet de demander l'adresse d'un sous-élément d'une structure de données d'agrégat.



Dernière mise à jour : Jeudi, le 13 juin 2019