2010-11-19 33 views
3

Ci-dessous un exemple de code arc X86,Port programme ci-dessous x86 à MIPS32

# define INC(_lval,_lqual) \ 
     __asm__ __volatile__ (\ 
     "lock ; incl (%0)" : /*out*/ : /*in*/"r"(&(_lval)) : "memory", "cc") 

S'il vous plaît aidez-moi quelqu'un arc MIPS32 équivalent.

Répondre

3

Cela ressemble à l'assemblage en ligne gcc pour un incrément atomique. Ceci est la gcc intrinsèque pour un incrément atomique:

__sync_fetch_and_add(&_lval, 1);

Travaux sur x86, MIPS32, etc.

+2

obtenir une référence non définie à '__sync_fetch_and_add_4 pour mips32 –

+0

@ding_dong: vous devriez aussi avoir vu un avertissement, du moins c'est ce que dit la documentation de gcc. –

+0

Si gcc ne l'a pas implémenté sur cette architecture, comme le suggère votre message d'erreur et la réponse de Jens, je crains de ne pas être d'une grande aide. Le manuel d'architecture MIPS32 montre que MIPS32 a un stockage conditionnel lié à la charge, vous devrez l'utiliser pour construire l'incrément atomique. –

0

J'ai trouvé un code qui pourrait vous être utile here. Il semble en fait indiquer que le builtin pour gcc n'est pas implémenté pour cette architecture.