Il y a habituellement une route dans toutes les langues, mais vous devez faff au sujet pour un jour ou deux parce que ces choses ne sont pas toujours documentées
Déclarez un espace op global de mémoire dans votre saveur de HLL. DIM LABELNAME1(0)
recherche Ensuite, pour la syntaxe asm qui met l'adresse dans eax
mov eax, ^LABELNAME(0)
mov eax, dword [_lablename]
mov eax, ^_lablename
etc etc etc
puis pop dans asm
Vous ne trouverez pas pop [^
partout sur google, mais il est celui qui fonctionne dans certains HLL
push eax
pop [^LABELNAME1(0)]
maintenant, votre HLL et asm peuvent converser entre eux quand vous le souhaitez
Il vaut bien déterminer
Undefined symbol _labelname
probbly doit être déclaré au début du programme
._labelname
mov dword [_lablename], 0
et utilisé plus tard par asm comme une étiquette
Comme je l'ai dit, vous aurez à embêter et à analyser pour votre saveur particulière de HLL, et les globales semblent fonctionner mieux
Vous aurez également besoin de savoir comment déclarer des zones de mémoire séparées pour stocker des variables dynamiques asm et l'exécution des opcodes ou vous obtiendrez le cache écrase qui paralysera les avantages de la vitesse de asm
Une petite routine que j'ai écrit sans séparer ces zones ASM a pris 20 heures à courir. Avec la séparation, il a fallu 1 heure
mov ax, OFFSET _labelname
Ce sont des choses 16 bits, (DOS etc, avec des règles de mémoire loufoques) ne sont pas vous faire des choses 32 bits avec votre HLL ???
A moins qu'il ne se passe tout en un segment que vous aurez besoin d'un opérande double mémoire pour trouver _labelname
, dx:ax
etc, et comme mentionné précédemment, vous avez 20 ans trop tard
jmp cs:_labelname
Travaux dans le même segment, mais En outre, si vos variables asm dynamiques sont placées dans votre segment de code ASM, alors une règle cardinale pour maximiser la vitesse ASM a été brisée pour un programme plus grand.
Avez-vous essayé de définir l'étiquette à l'intérieur du bloc '_asm' réel? – Cyclonecode
Demandé 20 ans trop tard. Veuillez mettre à jour votre compilateur. –
@Krister Oui, j'ai essayé de définir dans asm block; ça ne marche toujours pas. – Mikael