callc (SM4-ASM)
Appelle de manière conditionnelle une sous-routine marquée par où l’étiquette l # apparaît dans le programme.
| callc { _ z |_NZ} src0. Sélectionnez le _ composant, l# |
|---|
| Élément | Description |
|---|---|
| src0 |
[dans ] le composant sur lequel tester la condition. |
| budget# |
[dans ] l’étiquette de la sous-routine. |
Remarques
Quand un RET est rencontré, retourne l’exécution à l’instruction après cet appel.
Le format de jeton contient le décalage de l’étiquette correspondante dans le nuanceur pour des raisons pratiques.
L’exemple suivant illustre l’instruction call.
...
callc_z r1.y, l3 // if all bits in r0.x are 0, call l3
callc_nz r2.z, l3 // if any bit in r0.x is nonzero, call l3
...
ret
label l3
...
retc_nz r0.x
...
ret
Restrictions
- Les sous-routines peuvent imbriquer 32 en profondeur.
- La pile d’adresses de retour est gérée de façon transparente par l’implémentation de.
- S’il existe déjà 32 entrées sur la pile d’adresses de retour et qu’un appel est émis, l’appel est ignoré.
- Il n’existe pas de pile de paramètres automatique. L’application peut utiliser un tableau de registres temporaire indexable (x # [ ] ) pour implémenter manuellement une pile. Toutefois, les adresses de retour d’appel de sous-routine ne sont pas visibles et sont orthogonales à toute gestion de pile manuelle effectuée par l’application.
- L’indexation du paramètre l # n’est pas autorisée.
- Le registre 32 bits fourni par src0 est testé à un niveau binaire. Si un bit est différent de zéro, callc _ NZ effectue l’appel. Si tous les bits sont nuls, callc _ z effectue l’appel.
- La récursivité n’est pas autorisée.
Cette instruction s’applique aux étapes suivantes du nuanceur :
| Nuanceur de sommets | Nuanceur de géométrie | Nuanceur de pixels |
|---|---|---|
| x | x | x |
Modèle de nuanceur minimal
Cette fonction est prise en charge dans les modèles de nuanceur suivants.
| Modèle de nuanceur | Pris en charge |
|---|---|
| Shader, modèle 5 | oui |
| Modèle de nuanceur 4,1 | oui |
| Nuanceur modèle 4 | oui |
| Shader Model 3 (DirectX HLSL) | non |
| Shader Model 2 (DirectX HLSL) | non |
| Shader Model 1 (DirectX HLSL) | non |