µc => Divs
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

µc => Divs



  1. #1
    Toufinet

    µc => Divs


    ------

    Bonjour,

    A mon école on a un projet de simulateur de microprocesseur Coldfire en C
    On doit terminer le projet dans 1 semaine et 2 jours ( précisément )

    La prochaine fois que je vois mon prof, c'est Jeudi, donc en espérant avoir une réponse ce soir via FS :

    Ma question concerne le comportement de l'instruction DIVS ( pour un signé ou non, 32 ou 16 bits, peu importe ).

    La question est : que renvoie-t'il ? la valeur arrondie, la valeur inférieure, ou la valeur supérieure ?

    Très concrètement, si on fait 1 divisé par 2, quel est le résultat ?

    Voilà, rien de très compliqué ni très important, mais comme ça j'aurai un truc au poil
    Merci

    -----

  2. #2
    invite2562e666

    Re : µc => Divs

    Bonjour, Toufinet

    Voici la réponse :

    Description: Divide the unsigned destination operand by the unsigned source and store the unsigned result in the destination. For a word-sized operation, the destination operand is a longword and the source is a word; the 16-bit quotient is in the lower word and the 16-bit remainder is in the upper word of the destination. For a longword-sized operation, the destination and source operands are both longwords; the 32-bit quotient is stored in the destination. To determine the remainder on a longword-sized operation, use the REMU instruction.
    copiée du "Coldfire Reference Manuel.

    Donc 1 divisé par 2 fait 0 (quotient) avec un reste de 1.
    100 divisé par 40 fait 2 avec un reste de 20.


    th/

  3. #3
    Jack
    Modérateur

    Re : µc => Divs

    A mon école on a un projet de simulateur de microprocesseur Coldfire en C
    J'espère que ça ne concerne qu'une partie de l'unité centrale parce c'est un boulot titanesque autrement.

    Sinon, comme te l'a dit thm qui connait bien ces grosses bébêtes, il s'agit bien d'une division entière.

    A+

  4. #4
    Toufinet

    Re : µc => Divs

    Merci pour la réponse thm ...
    Mais en passant, dans la partie du manuel que tu cites ( et qui est mot à mot celle que j'ai ), je ne vois à aucun moment le fait que le résultat est la partie entière ... surtout pour un 32bit / 32bit ^^

    @Jack : le projet c'est : on nous file le fichier objet ( au format ELF ), et on doit pouvoir :
    1° le désassembler
    2° le simuler

    Le projet se base sur 25 instructions, mais lors de la soutenance, on va devoir rajouter une instruction en live, donc concrètement le but est de construire un simulateur très facilement adaptable.

  5. A voir en vidéo sur Futura
  6. #5
    Toufinet

    Re : µc => Divs

    haaa ok, je viens de capter !

    a = b*q + r

    Donc quand ils disent "quotient", c'est en fait q, donc la partie entière.

    Merci

  7. #6
    Toufinet

    Re : µc => Divs

    J'en rajoute une petite couche :

    pour DIVS.W

    32 bits / 16 bits => 16r:16q

    Si on fait par exemple 0x01234 ABCD / 0x0001 , il se passe quoi ?
    Vu que q tient sur plus de 16 bits, que devient q en réalité ?

    Merci thm

  8. #7
    invite2562e666

    Re : µc => Divs

    Bonsoir, Toufinet

    Je copie la suite du paragraphe précédent :

    An attempt to divide by zero results in a divide-by-zero exception and no registers are affected. The resulting exception stack frame points to the offending divide opcode. If overflow is detected, the destination register is unaffected. An overflow occurs if the quotient is larger than a 16-bit (.W) or 32-bit (.L) unsigned integer.
    réponse: overflow

    thierry

  9. #8
    Toufinet

    Re : µc => Divs

    pfiooouu ...

    Décidément !
    Soit je sais pas lire une doc, soit j'ai les yeux fermés !

    Merci thierry

Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...