2010-03-30 12 views
1

Je configure mon crosscompiler pour faire des instructions MIPS.Pourquoi mon crosscompilateur MIPS fonctionne-t-il de la sorte pour les opérations NON?

Et il compile bien le code C.

mais j'ai trouvé une chose étrange pour les opérations NOT.

si je fais du code comme

int a; 
    func(!a); 

et j'ai étudié les instructions MIPS avec le livre de texte qui dit « MIPS ne convertit pas l'opération à« ni zéro »

donc je pensais que ce serait converti comme

nor a a $zero 

mais mon compilateur convertit

xori a a 0x0 
sltu a 1 

////////////////////////////////////// J'ai compilé le code avec ' myaccount >> mipsel-inconnu-linux-gnu-gcc -S myfilename.c ' et il fait fichier monfichier.s ..

Qu'est-ce que je manque ??

Répondre

1

Vous confondez les opérations "non". L'opération "ni avec 0" est ~a (complément à 1), alors que vous avez écrit !a (qui renvoie 1 si l'opérande est 0 ou 0 sinon).

+0

Merci !!! c'est très très utile !!!!!!!!!!!!!! –