2017-01-29 2 views
0

constant J'ai une struct non initialisée:Accès à un membre d'une struct et en le comparant avec un

struc my_struct1 
     .a resd 
     .b resb 
     .c resd 
     .d resb 
    endstruc 

Ensuite, il est rempli avec des données:

mov rax, 123 
    ;......... 

    mov rdi, [my_struct1] 
    ;......... 

    syscall 

Comment je peux comparer ce que les valeurs ne un de ses champs a? En C je ferais ceci par:

if (my_struct1.c == SOME_CONSTANT) { 
    //...... 
} 
+0

Ce petit tutoriel peut vous donner un peu d'inspiration: http://mcs.uwsuper.edu/sb/224/Intro /struct_nasm.html –

Répondre

-1

Vous pouvez le faire à peu près de la même façon que vous le feriez dans c, non? Trouvez simplement l'adresse du champ dans mystruct, puis faites un cmp avec votre constante et vérifiez le drapeau dont vous avez besoin.

cmp [mystruct1+4], YOUR_CONSTANT 
jz .jump_somewhere_if_fields_are_equal 

Vous pouvez lire une explication complète de la façon d'utiliser un struct correctement ici, http://mcs.uwsuper.edu/sb/224/Intro/struct_nasm.html

+0

ce n'est pas nasm. – Torito

+0

Ceci est juste une idée de ce à quoi cela ressemblerait, pas de code fonctionnel. – odin

+0

Edité légèrement aussi ressembler plus à Intel/nasm – odin