2017-02-01 2 views
0

Je sais qu'un bloc __asm peut accéder à des variables déclarées en dehors de ces blocs, mais ce que je veux faire c'est trouver un moyen d'accéder à une variable déclarée dans un bloc __asm depuis l'extérieur d'un tel bloc. Toutes mes connaissances de C et C++ indiquent que cela devrait être impossible à cause de la façon dont C et C++ étendent quoi que ce soit au sein de {} blocs. Existe-t-il un moyen de le faire ou dois-je déclarer ces variables en dehors du bloc __asm?Puis-je accéder aux variables __asm ​​à l'extérieur d'un bloc __asm?

PS: Je n'ai trouvé aucune réponse pertinente à cette question lors de mes recherches.

+0

je suppose que nous supposons que vous utilisez MS Visual C++? –

+0

Oui, mais l'assemblage en ligne n'est-il pas disponible sur d'autres compilateurs? –

+1

Il est disponible (mais pas obligatoire) dans d'autres compilateurs mais pas toujours proposé d'une manière compatible avec MSVC++. Par exemple, dans GCC, il existe des modèles de langage d'assemblage qui fonctionnent différemment des modèles MSVC++. –

Répondre

1

La réponse ne semble pas

Microsoft spécifique

Bien qu'un bloc __asm ​​peut faire référence à C ou types de données C++ et les objets, il ne peut pas définir des objets de données avec les directives MASM ou opérateurs. Plus précisément, vous ne pouvez pas utiliser les directives de définition DB, DW, DD, DQ, DT et DF, ni les opérateurs DUP ou THIS. Les structures et enregistrements MASM sont également indisponibles. L'assembleur en ligne n'accepte pas les directives STRUC, RECORD, WIDTH ou MASK.

FIN Microsoft spécifique

D'ici https://msdn.microsoft.com/en-us/library/h70hd396.aspx

+0

Voilà ce dont j'avais peur. Mais merci. –