Manuel Amos Professional  Sommaire  Index

Code Machine


Le motif de remplissage est un entier standard sur quatre octets, mais si vous avez besoin de remplir la zone avec des copies multiples d'un seul octet, cette valeur peut être calculée comme suit, où V contiendra la valeur requise pour votre commande de remplissage :

E> BYTE=255 : Rem Peut être n'importe quel nombre de 0 à 255
   V=0
   Poke Varptr(V),BYTE : Poke Varptr(V)+1,BYTE
   Poke Varptr(V)+2,BYTE : Poke Varptr(V)+3,BYTE
   Print V

HUNT
fonction : trouver une chaîne de caractères dans la mémoire
first=Hunt(début To fin,s$)

HUNT est en réalité une version bas niveau de la commande familière INSTR$. Elle cherche dans la zone mémoire définie par les adresses de début et de fin, la première occurrence des caractères contenus dans votre chaîne spécifiée.

Si la recherche réussit, la position du premier caractère en mémoire est renvoyée, sinon une valeur nulle est retournée. Lors de l'utilisation de cette fonction, faites très attention à la sélection des points de début et de fin de la recherche.

Accès direct aux variables

VARPTR
fonction : lire l'adresse d'une variable
adresse=Varptr(variable)

Cette fonction utile renvoie la position de toute variable AMOS Professional dans la mémoire de l'Amiga. Les programmeurs familiers du C la trouveront très similaire à l'opérateur & (esperluette) dans ce langage.

VARPTR permet un accès en coulisses à vos variables, et avec une utilisation prudente vous pouvez y accéder directement, sans devoir passer par les routines standards. Cela est particulièrement utile avec les procédures, car si les procédures sont chargées avec l'adresse d'une variable au lieu de sa valeur réelle, cette variable peut être modifiée depuis l'intérieur de la procédure. Par exemple :

E> TEST=0
   Rem Utilisation correcte des crochets
   ANSWER[Varptr(Test)] : Rem Charger l'ADRESSE de la variable dans le paramètre AD
   Print TEST
   Procedure ANSWER[AD]
    Loke AD,42 : Rem Copier une nouvelle valeur dans la variable, en coulisses !
   End Proc

Il devrait y avoir peu de problèmes lors de la lecture des variables, mais les modifier est une opération très dangereuse !

Retour    Suivant
14.A.06