Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1126 Le 10/04/2011, à 17:44

Rolinh

Re : /* Topic des codeurs couche-tard [4] */

Pylade a écrit :

Mais quelle idée ! yikes

Bah j'ai pas le choix en fait... C'est un TP à faire pour demain... et je ne l'ai pas encore commencé (je rattrape la première partie...=> j'suis trop à la bourre!)

Hors ligne

#1127 Le 10/04/2011, à 21:59

Rolinh

Re : /* Topic des codeurs couche-tard [4] */

Ouep, ben pas encore finit ce pong... déjà rien que pour dessiner les formes géométriques... sad

Hors ligne

#1128 Le 10/04/2011, à 22:27

grim7reaper

Re : /* Topic des codeurs couche-tard [4] */

Ha ça !
Je m'en rappelle encore (bon moi j'avais pas fait un jeu entier vu qu'on avait peu de cours et peu de TP d'assembleur, juste du graphique de base).
La ligne droite c'est triviale, la diagonale c'est du Bresenham (voir du Xiaolin Wu si tu fait dans l'anti-crénelage) et le cercle c'est encore du Bresenham (ou de l'Andres).
Pas des algo très complexes, mais en assembleur ça peut occuper un petit peu tongue

Dernière modification par grim7reaper (Le 10/04/2011, à 22:27)

Hors ligne

#1129 Le 10/04/2011, à 22:33

Rolinh

Re : /* Topic des codeurs couche-tard [4] */

ouep, pour l'instant j'au fait un rectangle rempli (coloré) et je suis en train de faire un cercle avec Bresenham
Comme je débute, je suis lent et j'over-comment.

Le rectangle:

.macro drawPixelM x y color
@body of drawPixel
    stmfd sp!,{r4-r5}
    mov r4, #480
    mul r5,r4,\y
    add r5,r5,\x ,lsl #1
    add r5,r5,#0x6000000
    strh \color,[r5]
    ldmfd sp!,{r4-r5}
.endm

.GLOBL fillRect
fillRect:
    stmfd   sp!,{r0-r12,lr}
    
    @ r0: x origin
    @ r1: y origin
    @ r2: width
    @ r3: height
    @ r4: counter 1
    @ r5: counter 2
    @ r6: x position
    @ r7: y position
    @ r8: color
    
    @ init counters
    mov r4,#0
    mov r5,#0
    
    @ load color (get it from the top of the stack)
    ldr r8,[sp,#56]
    
    @ in order to fill in a rectangle, we need to browse each row and column
    @ so first iteration is the loop for the columns
Y:
    add r5, r5, #1 @ counter incrementation (r5++)
    @inside this loop, we have a second one to draw the lines
X:
    add r4, r4, #1 @ counter incrementation (r4++)
    add r6, r0, r4 @ add r0 and r4 and put it into r6 => move one to the right on the x axis
    add r7, r1, r5 @ add r1 and r5 and put it into r7 => move one down on the y axis
    drawPixelM r6, r7, r8 @ draw a pixel, color r10, at position (r6,r7)
    
    cmp r4, r2 @ compare the witdh and the counter to know if we reached the end of the line
    bne X @ goto X if they are different
    
    mov r4, #0 @ re-init r4 (new line)
    cmp r5, r3 @ compare height and the counter to know if we reached the end of a row
    bne Y @ goto Y if they are different
    
    ldmfd   sp!,{r0-r12,pc}

Hors ligne

#1130 Le 10/04/2011, à 22:43

grim7reaper

Re : /* Topic des codeurs couche-tard [4] */

Je sais pas à quel point l'assembleur que tu utilises optimise (les compilo pas trop con le font en général, les assembleurs je ne sais pas trop), mais ton code contient pas mal de dépendance RAW ce qui à tendance à pourrir le pipeline (et je ne crois pas que les ARM pratique l'OoOE donc tu ne peux pas non plus compter sur ça)…

Sinon, il me semble que

eor r4, r4, r4

est meilleur que

mov r4,#0

(j'en suis quasi‑sûr sur du CISC, sur du RISC beaucoup moins donc à voir…).

Dernière modification par grim7reaper (Le 10/04/2011, à 22:45)

Hors ligne

#1131 Le 10/04/2011, à 22:48

Rolinh

Re : /* Topic des codeurs couche-tard [4] */

Alors là, je dois te dire que je n'en sais fichtre rien.

Pour l'instant, je m'applique à avoir un résultat.Je m'occuperais des performances quand j'aurais bien compris le fonctionnement. wink

Hors ligne

#1132 Le 10/04/2011, à 22:50

:!pakman

Re : /* Topic des codeurs couche-tard [4] */

yikes Et dire qu'en C il suffit de charger un .png !
Ahlala, un peu d'assembleur et le C semble tout de suite de haut niveau j'imagine ? tongue

Dernière modification par :!pakman (Le 10/04/2011, à 22:50)


...

Hors ligne

#1133 Le 10/04/2011, à 22:50

Pylades

Re : /* Topic des codeurs couche-tard [4] */

^^


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1134 Le 10/04/2011, à 22:52

grim7reaper

Re : /* Topic des codeurs couche-tard [4] */

@Rolinh : oui bien sûr, l'optimisation ne doit être faite qu'à la fin. Comme le dit ce cher Donald Knuth : « […]premature optimization is the root of all evil.[…] »



:!pakman a écrit :

yikes Et dire qu'en C il suffit de charger un .png !

Pas forcément, on peut aussi tracer les cercles à la main en C (mais ça reste un peu plus simple qu'en assembleur) pour diverses raisons.

:!pakman a écrit :

Ahlala, un peu d'assembleur et le C semble tout de suite de haut niveau j'imagine ? tongue

Oui. Comme quoi tout est relatif tongue

Dernière modification par grim7reaper (Le 10/04/2011, à 23:06)

Hors ligne

#1135 Le 10/04/2011, à 23:05

Rolinh

Re : /* Topic des codeurs couche-tard [4] */

:!pakman a écrit :

Ahlala, un peu d'assembleur et le C semble tout de suite de haut niveau j'imagine ? tongue

Exact ^^

Arf, j'ai fini de coder mon cercle... mais c'est un carré... sad
Et pour débugger de l'assembleur, faut s'accrocher!

Hors ligne

#1136 Le 10/04/2011, à 23:20

Rolinh

Re : /* Topic des codeurs couche-tard [4] */

FIXED

j'avais inversé deux registres. Vl'a un cercle ^^

.macro drawPixelM x y color
@body of drawPixel
    stmfd sp!,{r4-r5}
    mov r4, #480
    mul r5,r4,\y
    add r5,r5,\x ,lsl #1
    add r5,r5,#0x6000000
    strh \color,[r5]
    ldmfd sp!,{r4-r5}
.endm

.GLOBL drawCircle
drawCircle:
    stmfd   sp!,{r0-r12,lr}
    
    @ r0: x origin
    @ r1: y origin
    @ r2: radius
    @ r3: color
    @ r4: current x coordinate
    @ r5: current y coordinate
    @ r6: m from the Bresenham algorithm (cf wikipedia)
    @ r7: x+center in x
    @ r8: y + center  in y
    @ r10: variable used as a "buffer variable"
    
    mov r4,#0 @ init the current x
    mov r5,r2 @ set current y to the radius
    
    mov r10,#4
    mul r6,r10,r2 @ did so because we cannot do mul r6,#2,r2
    mov r10,#5
    sub r6,r10,r6 @ now, m is 5-4*radius

    @ now that the variables are init, we start the loop
loop:
    add r7,r0,r4 @ x is x + x center
    add r8,r1,r5 @ y is y + y center
    drawPixelM r7 r8 r3 @ draw pixel at (x,y)
    drawPixelM r8 r7 r3 @ draw a pixel which is symetric
    sub r7,r0,r4
    add r8,r1,r5
    drawPixelM r7 r8 r3
    drawPixelM r8 r7 r3
    add r7,r0,r4
    sub r8,r1,r5
    drawPixelM r7 r8 r3
    drawPixelM r8 r7 r3
    sub r7,r0,r4
    sub r8,r1,r5
    drawPixelM r7 r8 r3
    drawPixelM r8 r7 r3

    cmp r6,#0  @ check if m > 0
    bmi negm   @ goto ngem ( m < 0 )
    
    mov r10,#1
    subs r5,r5,r10 @ y = y - 1
    mov r10,#8
    mul r10,r10,r5 @ 8*y
    subs r6,r6,r10 @ m = m - 8*y

@ case m < 0
negm:
    add r4,r4, #1 @ x++

    mov r10, #8
    mul r10, r10, r4 @ x*8
    add r6, r6, r10 @ m + 8*x
    add r6, r6, #4 @ m+ 8*x + 4

    cmp r4, r5
    beq loop @ if x == y
    bmi loop @ if x < y

    ldmfd   sp!,{r0-r12,pc}

Hors ligne

#1137 Le 10/04/2011, à 23:20

tshirtman

Re : /* Topic des codeurs couche-tard [4] */

sérieusement, pourquoi ne pas coder en C et demander à gcc de faire l'asm? ^^

Hors ligne

#1138 Le 10/04/2011, à 23:21

Rolinh

Re : /* Topic des codeurs couche-tard [4] */

tshirtman a écrit :

sérieusement, pourquoi ne pas coder en C et demander à gcc de faire l'asm? ^^

Le pire c'est que je peux ^^
Mais l'intérêt c'est de comprendre l'assembleur, pas de faire du C...

Hors ligne

#1139 Le 11/04/2011, à 00:04

Rolinh

Re : /* Topic des codeurs couche-tard [4] */

Bon, j'ai toutes les formes qu'il me faut pour mon pong. Reste plus qu'à animer ça. Mais là... dodo...
@plouch les codeurs smile

Hors ligne

#1140 Le 11/04/2011, à 00:19

Кຼزດ

Re : /* Topic des codeurs couche-tard [4] */

c


dou

Hors ligne

#1141 Le 11/04/2011, à 00:25

\\Ouranos//

Re : /* Topic des codeurs couche-tard [4] */

neutral


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#1142 Le 11/04/2011, à 00:34

kamui57

Re : /* Topic des codeurs couche-tard [4] */

Rolinh a écrit :

Bon, j'ai toutes les formes qu'il me faut pour mon pong. Reste plus qu'à animer ça. Mais là... dodo...
@plouch les codeurs smile

un pong en assembleur ? whaouh...t'as du courage.


Quand le dernier arbre aura été abattu, et le dernier animal exterminé, les hommes se rendront compte que l'argent ne se mange pas (proverbe indien)
Toshiba Satellite L655 4 Go RAM, Archlinux Gnome-shell,LXDE / W7
Toshiba Satellite M30 512 Mo RAM, Archlinux Gnome 3 restreint / Crunchbang LXDE
https://help.ubuntu.com/community/Pastebinit pour poster du texte sur internet en console

Hors ligne

#1143 Le 11/04/2011, à 01:00

Pylades

Re : /* Topic des codeurs couche-tard [4] */

.


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1144 Le 11/04/2011, à 01:02

Sir Na Kraïou

Re : /* Topic des codeurs couche-tard [4] */


Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.

Hors ligne

#1145 Le 11/04/2011, à 02:12

nesthib

Re : /* Topic des codeurs couche-tard [4] */

plop


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#1146 Le 11/04/2011, à 03:05

samυncle

Re : /* Topic des codeurs couche-tard [4] */

.


Hello world

Hors ligne

#1147 Le 11/04/2011, à 07:42

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [4] */

Scores totaux, depuis le début :

1) 3004    nesthib
2) 2762    samuncle
3) 2386    Pylade
4) 1936    Кຼزດ
5) 1664+5  grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
6) 1453    cm-t
7) 1058    :mad: ✰ :бешеный: ✰ :mad:
8) 855    helly
9) 816    \\Ouranos//
10) 659    gnuuat
11) 559    Lagierl
12) 506    tshirtman
13) 328    Rolinh
14) 272    The Uploader
15) 231    Kanor
16) 196    Askelon
17) 172    nathéo
18) 128    :!pakman
19) 121    ǤƦƯƝƬ
20) 93    petifrancais
21) 90    kamui57
22) 78    edge_one
22) 78    pierguiard
24) 70    gulp
25) 39    Le Rouge
26) 37    ilagas
27) 30    keny
27) 30    xapantu
29) 26    gustare
29) 26    d10g3n
31) 25    GentooUser
31) 25    Morgiver
33) 24    ไ୦บเઢ'
33) 24    Steap
35) 20    CROWD
36) 18    Ph3nix_
37) 16    kouskous
38) 15    timsy
39) 12    stratoboy
39) 12    sailing
39) 12    sakul
42) 11    alexises
42) 11    Crocoii
44) 10    Toineo
44) 10    NutMotion
44) 10    pseudovingtcinqcaracteres
44) 10    pfriedZ
44) 10    CasseTaTele
44) 10    Zeibux
50) 8    Mornagest
51) 7    Vista
52) 6    ubuntlin
52) 6    asma.geek
54) 5    tendances-tdct
54) 5    kinouchou
56) 4    danychou56
56) 4    Neros
56) 4    Biaise
56) 4    totoflute
56) 4    pinballyoda ㋛
56) 4    NLS le pingouin
56) 4    ceric
63) 3    Revan26914
64) 2    SoJaS
65) 1    geenux

RépartitionPosts/heure


Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#1148 Le 11/04/2011, à 07:42

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [4] */

Scores de la période en cours :

1) 84    nesthib
2) 61    samuncle
3) 55    Pylade
4) 44    Кຼزດ
5) 38    cm-t
6) 33    :mad: ✰ :бешеный: ✰ :mad:
7) 21    Rolinh
8) 18    tshirtman
9) 16    :!pakman
10) 15    The Uploader
11) 12    grim7reaper
12) 7    helly
13) 4    kamui57
13) 4    \\Ouranos//
15) 2    kouskous

Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#1149 Le 11/04/2011, à 14:56

Rolinh

Re : /* Topic des codeurs couche-tard [4] */

@ grim7reaper:
j'ai réfléchi à ce que tu as dis ici. En fait, je pense que c'est kifkif en RISC étant donné que dans tous les cas, l'instruction ne prend qu'un cycle.

Hors ligne

#1150 Le 11/04/2011, à 18:13

grim7reaper

Re : /* Topic des codeurs couche-tard [4] */

Ouais c'est bien ce qu'il me semblait (c'est pour ça que j'y suis allé avec des pincettes en disant ça).

Hors ligne