GT Turbo Posted November 9, 2005 Report Share Posted November 9, 2005 Et encore la surprise du chef, on a pas de décalage arithmétique gauche sur le Gpu !! Des droits on en a, mais gauche non et on recommence la série qui dit mieux, je proposes : shlq #x,r0 ; Décale de x jr NC,Pas_signé ; test du bit de retenue nop ; obligatoire raison technique bset #31,r0 ; signature manuel Pas_signé: ; label pour le saut On pratique le décalage, le bit de retenue est placé. Donc on en profite pour faire un saut si le nombre était positif sinon on le signe a la main. Attention il y a 'sha' qui le fait mais seulement du coté gauche !! GT En train de décalé a la main Link to comment Share on other sites More sharing options...
SCPCD Posted November 9, 2005 Report Share Posted November 9, 2005 ??? Je ne comprends pas... Le shift Arithmetique Gauche c'est pas la même chose que le shift Logique gauche ??? ex sur 8bits : non signé : 00000110 = 6 shl 1 -> 00001100 = 12 signé : 11111101 = -3 shl 1 -> 11111010 = -6 Link to comment Share on other sites More sharing options...
GT Turbo Posted November 9, 2005 Author Report Share Posted November 9, 2005 SCPCD : ??? Je ne comprends pas...Le shift Arithmetique Gauche c'est pas la même chose que le shift Logique gauche ???ex sur 8bits :non signé :00000110 = 6 shl 1-> 00001100 = 12signé :11111101 = -3 shl 1-> 11111010 = -6 Non si c'est comme sur un 68000, l'arithmetique conserve le bit de signe pas le logique.Et si on essais comme cela :10111101 si tu le décales de 1 a gauche, le chiffre passe au positif car le zéro passe sur le bit de signe.GT Link to comment Share on other sites More sharing options...
Azrael Posted November 9, 2005 Report Share Posted November 9, 2005 Et faire un SHA tout simplement ça fonctionne pas ? De toute maniere le decalage a gauche est arithmetique a cause du complement a zero, mais le decalage droit a besoin d'etre arithmetique, d'ou la nuance dans le descriptif de l'instruction. Ceci dit je peux me tromper. Link to comment Share on other sites More sharing options...
GT Turbo Posted November 9, 2005 Author Report Share Posted November 9, 2005 Azrael : Et faire un SHA tout simplement ça fonctionne pas ? De toute maniere le decalage a gauche est arithmetique a cause du complement a zero, mais le decalage droit a besoin d'etre arithmetique, d'ou la nuance dans le descriptif de l'instruction.Ceci dit je peux me tromper. Sha pas essayé, j'ai pris peur quand dans la doc y es inscrit qu'a droite c'est arithmetique et a gauche logique.Azrael tu peux me faire une explication de ton explication , j'ai du mal a capter !!GT Bien perdu !! Link to comment Share on other sites More sharing options...
Azrael Posted November 9, 2005 Report Share Posted November 9, 2005 C'est la meme explication que SCPCD : ex sur 8bits : non signé : 00000110 = 6 shl 1 -> 00001100 = 12 signé : 11111101 = -3 shl 1 -> 11111010 = -6 Je rajouterai qu'un SHA vers la droite te complete avec des bits 1 a gauche, comme ca ton nombre reste negatif. Avec ton exemple : 10111101 avec un decalage a gauche le chiffre passe au positif, ok, mais je dirais aussi que tu a un depassement de capacite, avec 32 bits faut quand meme le faire. Link to comment Share on other sites More sharing options...
Azrael Posted November 9, 2005 Report Share Posted November 9, 2005 Autre chose : si c'est bien ce que je pense, SHARQ est arithmetique (c'est pas nouveau, c'est dans la doc), mais SHLQ l'est aussi pour les memes raisons que mon post precedent. Tout ceci est a verifier bien entendu. Link to comment Share on other sites More sharing options...
SCPCD Posted November 9, 2005 Report Share Posted November 9, 2005 GT Turbo : Non si c'est comme sur un 68000, l'arithmetique conserve le bit de signe pas le logique.Et si on essais comme cela :10111101 si tu le décales de 1 a gauche, le chiffre passe au positif car le zéro passe sur le bit de signe. Ben, dans la doc M68000PRM le LSL et le ASL c'est la même chose ??et dans ton exemple, comme la dit Azrael, il y a depassement de capacité. Link to comment Share on other sites More sharing options...
GT Turbo Posted November 9, 2005 Author Report Share Posted November 9, 2005 SCPCD : Ben, dans la doc M68000PRM le LSL et le ASL c'est la même chose ??et dans ton exemple, comme la dit Azrael, il y a depassement de capacité. Pas tout a fait le bit de retenue est inséré comme bit rentrant ce que ne fait pas le Gpu.Mais vous avez raison, Azrael m'a fait une explication de la chose, c'est ma réprésentation binaire des chiffres qui avait besoin d'une grosse révision !!GT Rouillé en binaire !! Link to comment Share on other sites More sharing options...
GT Turbo Posted November 12, 2005 Author Report Share Posted November 12, 2005 J'ai fait des essais ce matin, donc : SCPCD tu as raison concernant le lsl et le asl. Pareil, il n'y a que l'asr qui insère le bit de retenue (Carry) par la gauche. Par contre piège, avec un asr ou son plutot sharq, décalage a droite, cette instruction peut transformer un nombre positif en négatif, essayez et vérifié, si le nombre posifit est très grand, un simple décalage de deux vers la gauche et un retour vers la droite peut le faire plonger : détail : %01111111111111111111111111111 (J'ai pas envie de compter, donc que le total fasse 32 digits). Un décalage de deux vers la gauche fait sortir le premier un et donc 'set' le bit de retenue et si on fait un asr de deux vers la droite, le décalage sera fait puis le bit de retenue placé, donc nombre négatif. J'ai essayé différents chiffres et si celui ci est un peu trop grand (Faut que je recopies une fois quelques chiffres) et un bon décalage (Ou des routines fait un décalage de 12(*4096)), ca va très vite de dépasser les 32 bits. Voili, voila GT Décalé Edit : modifié un droit par un gauche Link to comment Share on other sites More sharing options...
Azrael Posted November 12, 2005 Report Share Posted November 12, 2005 Ben oui, c'est ce qu'on appelle un depassement de capacite, et ca a toujours existe Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now