Logicielsmoto.com http://www.logicielsmoto.com/phpBB/ |
|
gagner des cycles machines http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=189 |
Page 6 sur 8 |
Auteur: | Prehisto [ 30 Aoû 2006, 12:32 ] |
Sujet du message: | |
Samuel Devulder a écrit: Il n'y a pas l'equivalent d'un UNSET ?
Malheureusement non. Pas dans Assembler en tous cas. Mais c'est une bonne idée, tiens.... |
Auteur: | jasz [ 30 Aoû 2006, 13:07 ] |
Sujet du message: | |
Si j'ai bonne mémoire on peut raccourcir Code: SUBD 2,S BCC DIV1 ADDD 2,S Et Code: STD 2,S
PULS D,X A vos neurones. Sachant qu'il faut considérer la routine de Tomix revisé par Prehisto [Edit]Je m'a planté dans le mode édit. |
Auteur: | Samuel Devulder [ 30 Aoû 2006, 13:11 ] |
Sujet du message: | |
jasz a écrit: On peut raccourcir Code: STD 2,S PULS D,X Heu... peut-etre: Code: LDX ,++S
LEAS 2,S |
Auteur: | jasz [ 30 Aoû 2006, 13:13 ] |
Sujet du message: | |
Il faut que D pointe le quotien |
Auteur: | Samuel Devulder [ 30 Aoû 2006, 13:19 ] |
Sujet du message: | |
jasz a écrit: Il faut que D pointe le quotien
Ah je m'ai goure je crois reprenons: Code: STD 2,S PULS D,X Donc D recupere la data 16bits pointee par S et X celle de D a l'entree: Code: TFR D,X Mais je vois pas bien le gain.. sauf qu'on evite d'ecrire en ram des trucs immediatements relus apres.
LDD ,S++ LEAS 2,S sam (je seche) |
Auteur: | jasz [ 30 Aoû 2006, 13:45 ] |
Sujet du message: | |
j'ai édité mon précedent message. Je vais te donner un coup de pouce. Regarde Code: SUBD 2,S BCC DIV1 ADDD 2,S Ici il y a une action inutile sous condition. Et là sans condition Code: STD 2,S
PULS D,X |
Auteur: | Samuel Devulder [ 30 Aoû 2006, 13:55 ] |
Sujet du message: | |
jasz a écrit: Je vais te donner un coup de pouce.
Ben pas mieux.. le addd ne fait qu'annuler la soustraction si celle ci donne un resultat negatif. Je vois pas comment faire mieux localement. sam (in ze 6-rage) |
Auteur: | Prehisto [ 30 Aoû 2006, 14:53 ] |
Sujet du message: | |
jasz a écrit: Si j'ai bonne mémoire on peut raccourcir Code: SUBD 2,S BCC DIV1 ADDD 2,S Non, je ne pense pas, Jasz. Le SUBD positionne le bit C de CC selon le signe de la différence. Si la différence est positive, le nombre n'est pas rétabli. SI elle est négative, oui. Et le bit de CC est maintenu à cause du dépassement dans l'addition Je pense que tout est important et que cette formulation est effectivement irréductible. Si D < 2,S, on ne soustrait pas 2,S mais le bit C de CC est à 1 Si D >= 2,S, on soustrait, mais le bit C de CC est à 0 jasz a écrit: Code: STD 2,S PULS D,X Attention! La valeur contenue dans D se retrouve dans X au dépilement. |
Auteur: | Samuel Devulder [ 30 Aoû 2006, 18:59 ] |
Sujet du message: | Opcodes (non) documentes |
Tomix3 a écrit: ..liste d'opcodes illegaux...
Sur la liste issue de la communaute des utilisateurs de Dragon http://redvip.homelinux.net/varios/texts/Dragon/UNDOCOPS.HTM, j'ai trouve des differences avec ta liste. C'est surtout lie entre NEG et COM: Code: Op Mne Mode ~ # Comment
02 NEG/COM Direct 6 2 If cc.c = 0 then NEG <$xx (op $00) If cc.c = 1 then COM <$xx (op $03) (<$xx) = not(<$xx) + not(cc.c) 3e RESET Inherent - 1 Forces internal Reset, disables interrupts. 41 NEGA Inherent 2 1 Same as 40 42 COMA Inherent 2 1 Same as 43 51 NEGB Inherent 2 1 Same as 50 52 COMB Inherent 2 1 Same as 53 5b DECB Inherent 2 1 Same as 5a 61 NEG Indexed 6+ 2+ Same as 60 - not tested 62 COM Indexed 6+ 2+ Same as 63 - not tested 71 NEG Extended 7 3 Same as 70 - not tested 72 COM Extended 7 3 Same as 73 - not tested 87 ?? 8f ?? c7 ?? cd ?? cf ?? Une autre liste ici: http://www.mdfsnet.f9.co.uk/Docs/Comp/6809/OpList Il parait que le 6309 a des trucs super sympa aussi (des registres caches accessible uniquement par TFR, etc). Il faudrait quand meme verifier que les FF que l'on recupere d'un TFR illegal ne viennent pas d'un registre cache des fois.. Ca serait rigolo. |
Auteur: | Samuel Devulder [ 30 Aoû 2006, 19:24 ] |
Sujet du message: | |
Tomix3 a écrit: $14: (1 cycle) plantage pur et dur du 6809
$15: (1 cycle) idem que $14 C'est pas la fameuse instruction HCF (Halt & Catch Fire) qui etait utilise sur le 6809 pour tester le bus d'addresse et son decodage par les chips externes au cpu (http://www.answers.com/topic/halt-and-catch-fire). Il faudrait placer un oscillo ou un espionneur de bus en sorti d'un vrai 6809 pour s'en assurer. sam. |
Auteur: | jasz [ 31 Aoû 2006, 16:30 ] |
Sujet du message: | |
Prehisto a écrit: jasz a écrit: Si j'ai bonne mémoire on peut raccourcir Code: SUBD 2,S BCC DIV1 ADDD 2,S Non, je ne pense pas, Jasz.] En fait j'avais pensé en tenant compte que D=>Divis et X=>Divid à: Code: CMPD ,S BLT DIV1 SUBD ,S Ce qui aurait permis de se passer du STD à la fin de la routine. Prehisto a écrit: Attention! La valeur contenue dans D se retrouve dans X au dépilement.
Oui, je n'avais pas fait attention au départ et après test ma formule fonctionne mais X se retrouve avec $FFFF dans une division sans reste. |
Auteur: | Prehisto [ 31 Aoû 2006, 17:47 ] |
Sujet du message: | |
jasz a écrit: En fait j'avais pensé en tenant compte que D=>Divis et X=>Divid à:
Code: CMPD ,S BLT DIV1 SUBD ,S Ce qui aurait permis de se passer du STD à la fin de la routine. ... sauf que CMPD nécessite malheureusement 1 octet (et quelques cycles) de plus que SUBD. |
Auteur: | Prehisto [ 31 Aoû 2006, 18:08 ] |
Sujet du message: | |
Je pense que nous pouvons reprendre notre petite joute, si tu as d'autres idées... |
Auteur: | Prehisto [ 31 Aoû 2006, 21:06 ] |
Sujet du message: | |
Une pas très facile, mais: - Je l'ai spreadée un peu partout - J'avoue l'avoir aussi tirée d'un programme de jeu C'est pourquoi je ne ferai pas trop attendre pour la réponse. Code: CMPA #10
BLO HEX ADDA #7 HEX ADDA #$30 Il s'agit donc de convertir toute valeur hexadécimale comprise de 0 à 15 en chiffre exprimé en ASCII ('0'-'9'/'A'-'F'). On gagne 2 octets et quelques cycles. Petit indice: On opère bien avec l'accumulateur A et non l'accumulateur B, car une des instructions utilisées n'existe pas pour B. |
Auteur: | Samuel Devulder [ 01 Sep 2006, 09:13 ] |
Sujet du message: | |
Prehisto a écrit: Code: CMPA #10 BLO HEX ADDA #7 HEX ADDA #$30 Il y a les ajustement decimaux pour les histoires de conversion hexa/decimal: "DAA".. mais la je ne pense pas que ce soit le truc.. peut-etre que l'utilisation du half-carry en revanche... Code: ADDA #$30 <banchement si H=0 vers L2> ADDA #7 L1: suite... Mais bon j'suis meme pas sur qu'il existe un branchement suivant le half-carry. Sinon il y a le coup du tableau tout con: Code: TAB FCB /0123456789ABCDEF/
LEAX TAB,PCR LDA A,X mais bon ca doit pas etre ca. sam (qui cherche...) |
Page 6 sur 8 | Heures au format UTC + 1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |