30

PpHd> merci bcp, j'essayerai demain soir smile
Kevin> bof, de tte façon j'ai jamais mis de ":" après mes labels, ça oblige a déplacer la main pour appuyer sur la touche, c trop fatiguant trisogringrin

31

>Kevin: Pas compatible avec Armcc qui lui est top question qualite du code genere.

32

Raaah! C'est quand même mieux d'utiliser un compilateur libre...
avatarMes 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é

33

et ça a koi de mieux pt de vue perfs? confus

34

apparemment le GCC supporte d'autres langages que le C et le C++ : le fortran et le java. est-ce que celà veut dire qu'on peut écrire un prog en fortran puis le compiler avec le GCC de façon qu'il soit lisible qsur la GP32 ? what

35

lol... perso je m'en fous, ça c les arguments ki servent a rien... a koi ça te sert de compiler un truc en java pour la gp32? y a une machine virtuelle java dessus?

non franchement mon post d'au dessus était ironique, je ne vois aucun intérêt a ça..
armcc est spécialement concu pour l'arm... de même qu'armasm.
et franchement que le logiciel soit libre ou pas, je m'en CONTREFOUS... entre un logiciel "libre" qui produit un bon code et un logiciel "pas libre" qui produit un très bon code, a moins que je doive payer le pas libre, je choisis sans hésiter le pas libre..
et c le cas ici..

36

Kevin Kofler a écrit :
Raaah! C'est quand même mieux d'utiliser un compilateur libre...

Bah non c'est pas mieux, puisque Armcc genere un code nettement meilleur que gcc, et comme tu le dis si bien toi meme, sur une plateforme embarquée c'est capital.
Un benchmark de référence: http://www.dwelch.com/gba/dhry.htm

37

bah tu sais, je cherchais juste à en savoir un peu +.
j'y connait rien en programation, mais ça m'intéresse.
Quant à utiliser le gratuit ou pas, chacun fait comme il veut

38

Normalement ca de vrait etre possible avec les languages compiles supportes par gcc, a condition qu'il y ait les bibliotheques standards de portees.

39

ok merci, c'est ce que j'avais cru comprendre...tu bosses avec l'ARM TKT et tu as opté pour l'ASM je crois..... J'ai bien envie d'essayer de me mettre au C ou C++ dès que j'aurai un peu de temps, histoire d'afficher qq sprites ou tiles sur ma GP32 ( dans l'idéal, car je ne pense pas être capable de bien + )....Mais vu le boulot que j'ai , c'est pas gagné sad

40

sBibi a écrit :
et ça a koi de mieux pt de vue perfs? confus

Il n'y a pas que les performances dans la vie!
sBibi
a écrit : a moins que je doive payer le pas libre

Si j'ai bien compris, tu es censé le payer justement... roll
avatarMes 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é

41

avatarMes 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é

42

>"Il n'y a pas que les performances dans la vie!"

ben si...

>"Si j'ai bien compris, tu es censé le payer justement..."
ben ptet mais la je l'ai pa payé triso dc moi ça me va très bien grin
d'ailleurs je voudrais bien savoir QUI ici qui a le devkit d'arm l'a réellement payé.. triso

43

France Telecom a le kit de developement et l'a paye roll
Sinon, y'a un kit d'essai libre dispo sur le site d'arm.

44

D'ailleurs, vu que vous ne regardez que les fonctionnalités, pas les licences: ARMCC supporte-t'il le standard ISO C99? GCC en supporte la plupart. Par exemple:
- déclaration de variables au plein milieu d'une fonction
- déclaration de variables dans l'entête d'une boucle for
- constructeurs par transtypage
- long long
- nombres complexes
...
avatarMes 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é

45

>- déclaration de variables au plein milieu d'une fonction
>- déclaration de variables dans l'entête d'une boucle for
ben il supporte le c++ alors roll

>- constructeurs par transtypage
No sé

>- long long
Oué. Y'a meme les sources des fonctions smile

>- nombres complexes
Bof.

46

PpHd a écrit :
>- déclaration de variables au plein milieu d'une fonction
>- déclaration de variables dans l'entête d'une boucle for
ben il supporte le c++ alors roll

Mais GCC supporte ça en C aussi. tongue Regarde mon portage de ANSI2KNR vers la TI-89/92+ (avec TIGCC): j'ai mis plusieurs for avec déclaration. Ça fait quand-même un peu drôle dans une source écrite à l'origine en C K&R. grin
(Pour les déclarations dans les for, il faut quand-même préciser -std=gnu99. Mais autre part dans le code, on peut mettre des déclarations même en mode gnu89, le mode par défaut actuel.)

C'est pratique les extensions ISO C99 / GNU C89 et les extensions GNU C89 / GNU C99!
avatarMes 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é

47

Suffit de compiler ta source c avec g++ et ca faisait ca avant. Je vois pas en quoi c'est exeptionnel. Meme si c'est toujours sympa.

48

boon... j'ai réussi a compiler cte merde, mais pas de façon très "catholique" magic

vu ke les != sections et les IMPORT/EXPORT foutaient la merde, g carrément tout mis dans la section d'Init grin
ça march nikel, ça fé un bo dégradé de bleu ton code PpHd, c cool :]]]

bon ce soir j'apprends l'asm arm, et demain soir j'essay de faire 2-3 trucs... puttext,éventuellemen 1-2 putsprite, traceur de ligne... smile

49

bon c parti je my met triso

50

Cool. Etrange neanmois que les import /export merdent confus

51

ben ue, si je les remets le linker foire... je compren pas... je posterai la source ce soir eventuellement, au cas ou j'aurai fait une erreur con...... ms je vois pas d'ou ca peut venir... pourtant j'ai rien change par rapport a la tienne de ce pt de vue la...

52

confus

53

bon, voila, ça ça marche, pas d'erreur o linkage:
; GP32 Startup Boot Code      CODE32      AREA     Init, CODE, READONLY      IMPORT     |Image$$RO$$Base|      IMPORT     |Image$$RO$$Limit|      IMPORT     |Image$$RW$$Base|      IMPORT     |Image$$RW$$Limit|      IMPORT     |Image$$ZI$$Base|      IMPORT     |Image$$ZI$$Limit|      ; HEADER of the file      ENTRY      B       _GpInit      DCD     |Image$$RO$$Base|   ; Start of Read Only section      DCD     |Image$$RO$$Limit|  ; End "      DCD     |Image$$RW$$Base|   ; Start of Read/Write section      DCD     |Image$$RW$$Limit|  ; End "      DCD     |Image$$ZI$$Base|   ; Base of Zero Initialized section      DCD     |Image$$ZI$$Limit|  ; End "      DCD     0x44450011          ; Magic numbers ?      DCD     0x44450011      DCD     0x01234567      DCD     0x12345678      DCD     0x23456789      DCD     0x34567890      DCD     0x45678901      DCD     0x56789012      DCD     0x23456789      DCD     0x34567890      DCD     0x45678901      DCD     0x56789012      DCD     0x23456789      DCD     0x34567890      DCD     0x45678901      DCD     0x56789012 ;     IMPORT     main ;     IMPORT     GenInit _GpInit      stmfd     sp!,{r0-r12,lr}      bl        GenInit      bl        main      ldmfd     sp!,{r0-r12,pc} ;     END ; On se place en Read Write pour pouvoir acceder plus rapidement aux variables globales ; Sans indirection supplementaire ;     CODE32 ;     AREA     Generic, CODE, READWRITE ;     EXPORT     GenInit ;     EXPORT     SwapBuffer ;     EXPORT     Synchro ;     EXPORT     GetScreen GenInit      ; Save Lr      mov     r11,lr      ; Get pointer to GpSurfaceSet routine      mov     r0,#0      swi     0xb      str     r0,SurfaceSet      ; Get time passed      mov     r0,#6      swi     0xb      str     r0,Timer      ldr     r0,[r0]      str     r0,OldTime      ; 16-bits mode      mov     r0,#16      mov     r1,#0      mov     r2,#0      swi     8      ; Allocate 2 DrawSurface      ldr     r0,AdrSurface1      mov     r1,#0      mov     r2,#1      swi     8      ldr     r0,AdrSurface2      mov     r1,#1      mov     r2,#1      swi     8      ; Set Current Displayed Surface      ldr     r0,AdrSurface1      ldr     r1,SurfaceSet      mov     lr,pc          ; Y'a pas a dire l'arm      mov     pc,r1          ; C'est special !      ; Set Current Working Screen      ldr     r0,AdrSurface2      ldr     r0,[r0]          ; Ptr is the first one      str     r0,Screen      mov     pc,r11          ; Return SwapBuffer      ldr     r1,=AdrSurface1      ldr     r0,Flip               ; Current Flip      ldr     r2,[r1,r0]            ; Read current working DrawSurface      eor     r0,r0,#4              ; Swap Surface      ldr     r2,[r2]               ; Read Screen      str     r0,Flip               ; Save Flip value      str     r2,Screen             ; Save current working screen      ldr     r2,SurfaceSet         ; Read Surface Set function      ldr     r0,[r1,r0]            ; Read current displayed adress      mov     pc,r2                 ; Jump to surface set Synchro      ldr     r2,Timer            ; Read Timer      ldr     r1,OldTime          ; Read old Time      add     r1,r0,r1            ; Get new time Loop           ldr     r0,[r2]           cmp     r0,r1           bls     Loop      mov     pc,lr GetScreen      ldr     r0,Screen      mov     pc,lr DrawSurface1    DCD     0,0,0,0,0,0,0 DrawSurface2    DCD     0,0,0,0,0,0,0 AdrSurface1     DCD     DrawSurface1 AdrSurface2     DCD     DrawSurface2 Flip            DCD     0 Screen          DCD     0 SurfaceSet      DCD     0 Timer           DCD     0 OldTime         DCD     0 ;     END ;     CODE32 ;     AREA     Program, CODE, READONLY ;     EXPORT     main ;     IMPORT     GetScreen ;     IMPORT     SwapBuffer main      bl   GetScreen      mov  r3,#0 mainloop  ldr     r2,=320*240/64 loop           strh     r3,[r0],#2                subs     r2,r2,#2                bne     loop           add     r3,r3,#1           cmp     r3,#32*2           bne     mainloop      bl     SwapBuffer Stop b     Stop      END

54

et ça avec les différentes sections, et les import/exports ki font foirer le linker...
; GP32 Startup Boot Code      CODE32      AREA     Init, CODE, READONLY      IMPORT     |Image$$RO$$Base|      IMPORT     |Image$$RO$$Limit|      IMPORT     |Image$$RW$$Base|      IMPORT     |Image$$RW$$Limit|      IMPORT     |Image$$ZI$$Base|      IMPORT     |Image$$ZI$$Limit|      ; HEADER of the file      ENTRY      B       _GpInit      DCD     |Image$$RO$$Base|   ; Start of Read Only section      DCD     |Image$$RO$$Limit|  ; End "      DCD     |Image$$RW$$Base|   ; Start of Read/Write section      DCD     |Image$$RW$$Limit|  ; End "      DCD     |Image$$ZI$$Base|   ; Base of Zero Initialized section      DCD     |Image$$ZI$$Limit|  ; End "      DCD     0x44450011          ; Magic numbers ?      DCD     0x44450011      DCD     0x01234567      DCD     0x12345678      DCD     0x23456789      DCD     0x34567890      DCD     0x45678901      DCD     0x56789012      DCD     0x23456789      DCD     0x34567890      DCD     0x45678901      DCD     0x56789012      DCD     0x23456789      DCD     0x34567890      DCD     0x45678901      DCD     0x56789012      IMPORT     main      IMPORT     GenInit _GpInit      stmfd     sp!,{r0-r12,lr}      bl        GenInit      bl        main      ldmfd     sp!,{r0-r12,pc}      END ; On se place en Read Write pour pouvoir acceder plus rapidement aux variables globales ; Sans indirection supplementaire      CODE32      AREA     Generic, CODE, READWRITE      EXPORT     GenInit      EXPORT     SwapBuffer      EXPORT     Synchro      EXPORT     GetScreen GenInit      ; Save Lr      mov     r11,lr      ; Get pointer to GpSurfaceSet routine      mov     r0,#0      swi     0xb      str     r0,SurfaceSet      ; Get time passed      mov     r0,#6      swi     0xb      str     r0,Timer      ldr     r0,[r0]      str     r0,OldTime      ; 16-bits mode      mov     r0,#16      mov     r1,#0      mov     r2,#0      swi     8      ; Allocate 2 DrawSurface      ldr     r0,AdrSurface1      mov     r1,#0      mov     r2,#1      swi     8      ldr     r0,AdrSurface2      mov     r1,#1      mov     r2,#1      swi     8      ; Set Current Displayed Surface      ldr     r0,AdrSurface1      ldr     r1,SurfaceSet      mov     lr,pc          ; Y'a pas a dire l'arm      mov     pc,r1          ; C'est special !      ; Set Current Working Screen      ldr     r0,AdrSurface2      ldr     r0,[r0]          ; Ptr is the first one      str     r0,Screen      mov     pc,r11          ; Return SwapBuffer      ldr     r1,=AdrSurface1      ldr     r0,Flip               ; Current Flip      ldr     r2,[r1,r0]            ; Read current working DrawSurface      eor     r0,r0,#4              ; Swap Surface      ldr     r2,[r2]               ; Read Screen      str     r0,Flip               ; Save Flip value      str     r2,Screen             ; Save current working screen      ldr     r2,SurfaceSet         ; Read Surface Set function      ldr     r0,[r1,r0]            ; Read current displayed adress      mov     pc,r2                 ; Jump to surface set Synchro      ldr     r2,Timer            ; Read Timer      ldr     r1,OldTime          ; Read old Time      add     r1,r0,r1            ; Get new time Loop           ldr     r0,[r2]           cmp     r0,r1           bls     Loop      mov     pc,lr GetScreen      ldr     r0,Screen      mov     pc,lr DrawSurface1    DCD     0,0,0,0,0,0,0 DrawSurface2    DCD     0,0,0,0,0,0,0 AdrSurface1     DCD     DrawSurface1 AdrSurface2     DCD     DrawSurface2 Flip            DCD     0 Screen          DCD     0 SurfaceSet      DCD     0 Timer           DCD     0 OldTime         DCD     0      END      CODE32      AREA     Program, CODE, READONLY      EXPORT     main      IMPORT     GetScreen      IMPORT     SwapBuffer main      bl   GetScreen      mov  r3,#0 mainloop  ldr     r2,=320*240/64 loop           strh     r3,[r0],#2                subs     r2,r2,#2                bne     loop           add     r3,r3,#1           cmp     r3,#32*2           bne     mainloop      bl     SwapBuffer Stop b     Stop      END

55

Je peux pas t'aider.
Chez moi ca marche niquel.
Et tu viens de me faire me rendre compte d'un detail subtil grin

56

ah? grin
et c'est quoi? grin
a part le fait ke ca sert a rien de decouper les sources quand on veut les poster? grin

57

Qu'on a beau declarer READ_ONLY, ca reste du READ_WRITE tongue
Vu que le MC gere pas le MMU et donc les exeptions de page.

58

arf grin
dc ça ser a rien grin

59

hmm.. PpHd!
c'est de moins en moins normal tou ça...

d'abord, les import/export foirent..
ensuite, je peux pas utiliser d'instructions du type:
add r0,r1,r2 lsl #1

le compilo geule et me dit unexpected characters at end of line..
je commence a avoir des doutes quant a ma version d'armasm...

peut être c'est la syntaxe que j'utilise pour compiler qui n'est pas bonne, g ptet oublié un parametre...

armasm -CPU ARM9TM -Littleend boot.asm
armlink -bin -first boot.o boot.o -ro-base 0x0C000000 -rw-base 0x0C100000 -o boot.gxb

si ça vient pas de la, ça doit être le compilateur..
et si c le cas, est-ce que tu pourrai m'envoyer tes versions d'armcc, armasm et armlink stp? sad
pke la v rien pouvoir faire, et y a peut être encore d'autres trucs qu'il comprend pas... sad

60

add r0,r1,r2,lsl #1
Oublie pas la , roll