1

S'cusez-moi, Comment fait-on pour afficher des nombres 32bits avec sprintf what
J'ai beau préfixer mes formats avec 'l', mais ça ne marche pas, il me prend toujours mes nombres en 16bits!
(Je veux afficher les adresses de début et de fin d'une SYM_STR, mais les nombres s'affichent sur 4 chiffres (Hexa) et entre 4000h et 5000h, il n'y a pas 8 octets de différence!)
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

2

Tu peux montrer comment tu l'appelles stp?
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

3

Je le fais en assembleur, mais en C, ça donnerait:

char buffchaine[30];
char *format="D: %lx A: %lx";
char *adresseDeb, *adresseFin;
sprintf(buffchaine,format,adresseDeb,adresseFin);
ST_helpMsg(buffchaine);

Et il me donne un truc comme ça:
D: 4940 A:5934

(bon je dois me coucher)
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

4

Sûrement que ton adresse complète est $00004940, donc il n'affiche pas les '0' inutiles.
Si tu veux absolument les voir, il faut que tu fasses : char *format="D: %08lx A: %08lx"; (il me semble)

5

Mais le problème, c'est qu'il ne doit même pas y avoir 10 de Différence entre les deux adresses!
C'est pkoi j'ai plutot l'impression d'avoir les deux words d'un même long!
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

6

Pourrais-tu poster le vrai code assembleur, pas une approximation en C, s'il te plaît?
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

oké, voici la source de ma fonction: ;char *SymStrLen(char *chaine) ;Retourne l'adresse du zÚro terminal dans A0.l ;et la longueur dans D0.w ;params SSLchn      EQU         8 ;vars BuffChaine  EQU         -30 Longueur    EQUR        D0 SymStrLen:  LINK        A6,#-30           ;Lie A6 Ó la pile             MOVEM.l     D3-D7/A2-A5,-(A7) ;Sauve contexte (rien Ó sauver) ;--- Debut de la fonction ---             MOVE.l      $C8,A5            ;Table des ROM_CALLs en A5             MOVE.l      SSLchn(A6),A0     ;Adresse de la chaine             CLR.w       Longueur ;Boucle de parcours de la chaine SSLlp01:             TST.b       (A0)+             ;Si chaine[i++]==0             BEQ         SSLxl01           ;->On quitte la boucle             ADDQ.w      #1,Longueur       ;IncrÚmente la longueur             CMP.w       #8,Longueur       ;SI longueur <= 8             BLE         SSLlp01           ;->On reboucle ;Erreur: La chaine fait plus de 8 caractÞres!             MOVEA.l     #0,A0             ;Retourner NULL             BRA         SSLfin            ;On va Ó la fin du prog SSLxl01: ;Ici D0 est la longueur et A0 pointe juste aprÞs le ZÚro terminal             SUBQ.l      #1,A0             ;Replace sur le ZÚro SSLfin:             MOVEM.l     A0/D0,-(A7) ;Sauve la longueur ;Affiche la longueur             PUSH.w      Longueur          ;Longueur Ó afficher             PUSH.l      SSLchn(A6)        ;Nom de chaine             PEA.l       SSLformat(PC)     ;Format Ó utliser             PEA.l       BuffChaine(A6)    ;Buffer de chaine             RCFROM      A5,A0,sprintf     ;RC sprintf             LEA         14(A7),A7         ;DÚpile             SLMsgQ      BuffChaine(A6)             RCFROM      A5,A0,ngetchx ;Affiche les adresses             PUSH.l      A0             PUSH.l      SSLchn(A6)             PEA.l       SSLformat2(PC)    ;Format Ó utliser             PEA.l       BuffChaine(A6)    ;Buffer de chaine             RCFROM      A5,A0,sprintf     ;RC sprintf             LEA         16(A7),A7         ;DÚpile             SLMsgQ      BuffChaine(A6)             RCFROM      A5,A0,ngetchx             MOVEM.l     (A7)+,A0/Longueur ;Rappelle la longueur ;--- Sortie du Prog ---             MOVEM.l     (A7)+,D3-D7/A2-A5 ;Rappelle contexte (rien Ó rappeler)             UNLK        A6                ;LibÞre A6             RTS                           ;Retour ;--- Fin du programme --- SSLformat   DC.b        '%s Longueur:%d',0 SSLformat2  DC.b        'D: %ld A: %ld',0
En fait, j'utilisais le sprintf à des fins de débogage, pour voir si j'obtenais bien une SYM_STR valide (ce qui est maintenant le cas)
Mais même si la fonction renvoie bien ce que je veux, le détail du sprintf est quand même gênant...
Edit:what Pouquoi mes formats sont préfixés par des \ what
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

8

Link a écrit :
oké, voici la source de ma fonction: ;char *SymStrLen(char *chaine) ;Retourne l'adresse du zÚro terminal dans A0.l ;et la longueur dans D0.w ;params SSLchn      EQU         8 ;vars BuffChaine  EQU         -30 Longueur    EQUR        D0 SymStrLen:  LINK        A6,#-30           ;Lie A6 Ó la pile             MOVEM.l     D3-D7/A2-A5,-(A7) ;Sauve contexte (rien Ó sauver) ;--- Debut de la fonction ---             MOVE.l      $C8,A5            ;Table des ROM_CALLs en A5             MOVE.l      SSLchn(A6),A0     ;Adresse de la chaine             CLR.w       Longueur ;Boucle de parcours de la chaine SSLlp01:             TST.b       (A0)+             ;Si chaine[i++]==0             BEQ         SSLxl01           ;->On quitte la boucle             ADDQ.w      #1,Longueur       ;IncrÚmente la longueur             CMP.w       #8,Longueur       ;SI longueur <= 8             BLE         SSLlp01           ;->On reboucle ;Erreur: La chaine fait plus de 8 caractÞres!             MOVEA.l     #0,A0             ;Retourner NULL             BRA         SSLfin            ;On va Ó la fin du prog SSLxl01: ;Ici D0 est la longueur et A0 pointe juste aprÞs le ZÚro terminal             SUBQ.l      #1,A0             ;Replace sur le ZÚro SSLfin:             MOVEM.l     A0/D0,-(A7) ;Sauve la longueur ;Affiche la longueur             PUSH.w      Longueur          ;Longueur Ó afficher             PUSH.l      SSLchn(A6)        ;Nom de chaine             PEA.l       SSLformat(PC)     ;Format Ó utliser             PEA.l       BuffChaine(A6)    ;Buffer de chaine             RCFROM      A5,A0,sprintf     ;RC sprintf             LEA         14(A7),A7         ;DÚpile             SLMsgQ      BuffChaine(A6)             RCFROM      A5,A0,ngetchx ;Affiche les adresses             PUSH.l      A0             PUSH.l      SSLchn(A6)             PEA.l       SSLformat2(PC)    ;Format Ó utliser             PEA.l       BuffChaine(A6)    ;Buffer de chaine             RCFROM      A5,A0,sprintf     ;RC sprintf             LEA         16(A7),A7         ;DÚpile             SLMsgQ      BuffChaine(A6)             RCFROM      A5,A0,ngetchx             MOVEM.l     (A7)+,A0/Longueur ;Rappelle la longueur ;--- Sortie du Prog ---             MOVEM.l     (A7)+,D3-D7/A2-A5 ;Rappelle contexte (rien Ó rappeler)             UNLK        A6                ;LibÞre A6             RTS                           ;Retour ;--- Fin du programme --- SSLformat   DC.b        '%s Longueur:%d',0 SSLformat2  DC.b        'D: %ld A: %ld',0

Le problème est que tu réutilises des registres alors qu'ils ont été détruits. Remplace:
;Affiche les adresses
par:
            MOVEM.l     (A7)+,A0/Longueur ;Rappelle la longueur
;Affiche les adresses
            MOVEM.l     A0/D0,-(A7) ;Sauve la longueur

Edit:
what Pouquoi mes formats sont préfixés par des \ what

C'est un bogue de la coloration syntaxique. Utilise des [pre], c'est beaucoup plus pratique. Ça permet aussi de copier-coller la source sans devoir perdre son temps à supprimer ces !"§$%&/()=? de numéros de ligne.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

Merci!
J'ai fini par trouver le problème en modifiant ma ma fonction.

MAis ce que je voulais faire (de toute façon c'était triso) ne marche pas: Je voulais associer le même Handle à deux variables, et vor ce que ça fait si l'on en modifie une gol: Ca ne marche pas, la var modifiée change de Handle.non
Par contre, la var non modifiée, qui se retrouve avec un Handle fantôme, buggue bien, et ma VTI n'a pas été décué du voyage!tongue
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

10

lol beta crasheur de rom grin
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti