Utilizator:
Parola:
Am uitat parola... | Cont nou!


Articole Resurse Echipe Competiții Proiecte Forum DevBlogs Locuri de muncă GDROMag Issue#1 GDROCon 2007

 
Forum » Programare » Altele » Wiz dev




Pagina 1 din 1 [ 1 ]

Mesaj Info autor
    Postat la 05 Sep 2008 23:18:28    Subiect: Wiz dev
Rimio info:

Rimio:

Cica o sa apara o noua consola handheld pe piata, prin noiembrie. Ii zice Wiz si specificatiile sunt destul de interesante: un proc ARM9 de 533 MHz, ceva accelerare 3D (nu am gasit mare lucru privitor la acest aspect, numai un nenea care zice 1.33 MPoly/s si OpenGL ES 1.1), 64 MB RAM si touch OLED de 3 toli.

Acuma urmeaza intrebarile Very Happy. Cum producatorii nu s-au sinchisit sa ne dea ceva tooluri sau documentatie, tot ce stim e ca ruleaza un linux. Este posibil sa nu dea nici macar o implementare OpenGL si sa ne lase in ceata cum au facut si cu GP2x, cand au trebuit sa vina altii sa faca lucrul asta. Ma cam mananca palmele sa incep sa scriu un joc pentru asa ceva (pentru ca limitarile hardware imi permit sa am modele si texturi de proasta calitate si sa nu fiu dezavantajat cu mult fata de "big boys") dar as vrea si opiniile voastre. Nu am mai programat pentru procesoare ARM (sunt chichite de care trebuie sa tin cont? optimizari?) si nici pentru o consola noua, daramite una care inca nu a aparut. Sa am incredere in cifra 1.33 zvonita pe forumuri? Sa am incredere ca o sa am cu ce compila codul GL? Ce parere aveti?

If at first you don't succeed, you fail.



Status:
Înregistrat pe:
24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 800
Locatie: Pitesti, Arges
Programator

 
    Postat la 06 Sep 2008 11:23:04    Subiect: Re: Wiz dev
ZyZyX info:

ZyZyX:

Rimio a scris:

Nu am mai programat pentru procesoare ARM (sunt chichite de care trebuie sa tin cont? optimizari?)


Programarea pe ARM este in mare la fel ca pe x86, avand totusi cateva chichite :
  1. Procesorul poate rula atat in big endian, cat si litle endian, endianess-ul fiind stabilit de OS. Deci trebuie sa cam stii dinainte ce endian foloseste, sau sa scri cod care merge pe ambele reprezentari...
  2. Citirea si scrierea in memorie trebuie sa fie aliniata la tipul de date folosit. Deci daca citesti din memorie un WORD, atunci acel word trebuie sa se gaseasca la o adresa multiplu de 2, pentru DWORD, la multiplu de 4. Daca nu faci asta, atunci rezultatul va fi nedefinit.

Ca optimizari specifice pentru ARM ar fi bine de stiut urmatoarele:

1. NU ARE FPU!!! ( operatiile in virgula mobila sunt emulate ) Trebuie sa folosesti fixed point pentru viteza...

2. NU ARE INSTRUCTIUNE DE IMPARTIRE!!! ( div-ul este emulat ) Evita div-urile si mod-urile acolo unde poti...

3. Orice instructiune se poate executa conditionat. Deci daca ai codul urmator:
Cod sursă:
if (a>b) a -= b; else b -= a;
, atunci acel if nu va genera instructiune de branch deoarece a-=b si b-=a pot fi conditionate in functie de a>b. Codul ASM ar fi de genu:
Cod sursă:
CMP r1, r2
SUBGT r1, r1, r2
SUBLT r2, r2, r1
Daca ai avea in blocurile if si else mai mult cod, atunci se vor folosi branch-uri...

4. Aproape toate instructiunile ( in afara de inmultiri ) pot aplica o shiftare sau rotatie cu o constanta celui de-al doilea operand. Deci urmatoarele doua expresii sunt echivalente din punctul de vedere al performantei si numarului de instructiuni:
Cod sursă:
rezultat = a + b;  // ADD R1, R2, R3
rezultat = a + (b << 16)// ADD R1, R2, R3, LSL#16 


5. Exista instructiune de Multiply and Accumulate, asta inseamna ca urmatoarele doua expresii sunt echivalente din punctul de vedere al performantei si numarului de instructiuni:
Cod sursă:
rezultat = a * b; // SMULL R1, R2, R3, R4
rezultat = a * b + c; // SMLAL R1, R2, R3, R4


6. Toate instructiunile aritmetice lucreaza numai cu registrii, deci daca folosesti constante, acestea vor fi incarcate din memorie ( deci o instructiune in plus ), sau in unele cazuri favorabile vor fi generate folsind shiftarile...

Urmatoarele patru sfaturi sunt valabile cam pentru orice platforma :

7. ARM-ul are 16 registrii din care doar 12 de uz general, iar accesul la memorie aduce penalizari, deci trebuie sa incerci sa folosesti cat mai putine variabile, astfel incat cele care sunt mai des folosite sa incapa in registrii...

8. Unde este posibil foloseste for-uri cu decrementare :
Cod sursă:
for(i = 0; i  0)


10. Foloseste loop unrolling acolo unde este posibil...

Mai sunt si alte optimizari specifice, dar pentru alea ar cam trebui sa scri ASM... Daca te bagi la asa ceva, nu strica sa arunci o privire prin cartea de referinta pentru programarea ARM.


Pentru celelalte intrebari nu stiu ce sa raspund ( dar totusi nu m-as avanta sa dezvolt pentru ceva ce inca nu a aparut si nici nu se stie ce succes va avea).


Status:
Înregistrat pe:
08 Jun 2007 18:07:36
Vârsta: 28 ani
Mesaje: 24
Locatie: Bucuresti
Programator

 
    Postat la 06 Sep 2008 11:38:53    Subiect: < fara subiect >
Rimio info:

Rimio:

Mersi mult pentru sfaturi Smile. Acum caut si cartea,

If at first you don't succeed, you fail.



Status:
Înregistrat pe:
24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 800
Locatie: Pitesti, Arges
Programator

 
    Postat la 24 Sep 2008 11:17:07    Subiect: < fara subiect >
raicuandi info:

raicuandi:

Am un .doc cu tutorial care te introduce in lumea ARM. Vrei?

Method 2: Move Your Mouse Pointer
If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.


Status:
Înregistrat pe:
24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator

 
    Postat la 24 Sep 2008 12:39:28    Subiect: < fara subiect >
Rimio info:

Rimio:

Yes please. Mail sau IM, ca nu ai mai trecut pe mess de o vesnicie Very Happy.

If at first you don't succeed, you fail.



Status:
Înregistrat pe:
24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 800
Locatie: Pitesti, Arges
Programator

 
    Postat la 23 Mar 2009 14:07:57    Subiect: < fara subiect >
Overburn info:

Overburn:

nu prea vad ce ar fi special la consola asta
nokia n95 are cam aceleasi specificatii (in afara de cpu care parca'i la 330mhz si ram 128 parca)
asta ca sa nu mai vorbesc de viitoru n97, sau asus sau htcuri Smile


Status:
Înregistrat pe:
06 Mar 2007 07:36:21
Vârsta: 21 ani
Mesaje: 291
Locatie: Ploiesti


 
    Postat la 23 Mar 2009 19:58:09    Subiect: < fara subiect >
BacioiuC info:

BacioiuC:

raicuandi, te rog frumos trimite-mi si mie pe mail acea carte (bacioiu.ciprian [at] yahoo [dot] com)


Status:
Înregistrat pe:
14 Mar 2009 23:58:07
Vârsta: 21 ani
Mesaje: 89
Locatie: Bucuresti
Game designer
Freelancer
 
    Postat la 25 Mar 2009 01:09:46    Subiect: < fara subiect >
raicuandi info:

raicuandi:

Incerc sa-l gasesc, dar o sa dureze putin. Intreaba-l pe Rimio il mai are.

Method 2: Move Your Mouse Pointer
If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.


Status:
Înregistrat pe:
24 Mar 2007 21:02:40
Vârsta: 22 ani
Mesaje: 514
Locatie: Adelaide, Australia
Programator

 

Pagina 1 din 1 [ 1 ]


Server time: 06:49:13 24.05.2012



[ Termeni si conditii | Contact | F.A.Q. | Funny Pictures ]

© 2006 - 2012 Copyright 7thFACTOR Entertainment - All rights reserved