Help me please

Pour discuter de l'assembleur
Anonyme

Help me please

Message par Anonyme »

Qui peut me convertir se code en asm fasm ?:

Code : Tout sélectionner

#pragma aux inner = \
    "    push  ebp                                      "\
    "    rol   eax, 16                                  "\
    "    rol   edx, 16                                  "\
    "    mov   bl, al                                   "\
    "    mov   bh, dl                                   "\
    "    mov   esi, [_dudx]                             "\
    "    mov   ebp, [_dvdx]                             "\
    "    shl   esi, 16                                  "\
    "    mov   dl, byte ptr [_dudx+2]                   "\
    "    shl   ebp, 16                                  "\
    "    mov   dh, byte ptr [_dvdx+2]                   "\
    "    lea   edi, [edi+ecx]                           "\
    "    xor   ecx, -1                                  "\
    "    inc   ecx                                      "\
    " next:                                             "\
    "    mov   al, [ebx]                                "\
    "    add   edx, ebp                                 "\
    "    adc   bh, dh                                   "\
    "    add   eax, esi                                 "\
    "    adc   bl, dl                                   "\
    "    mov   [edi+ecx], al                            "\
    "    inc   ecx                                      "\
    "    jnz   next                                     "\
    "    pop   ebp                                      "\
    parm [edi] [ecx] [ebx] [eax] [edx] modify [eax ebx ecx edx esi edi]
je pige que dale :/
Merci :D
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Tu veux te mettre au texture mapping? :D Ca devrait donner qq chose comme ça

Code : Tout sélectionner

dudx.l = 0
dvdx.l = 0
  !PUSH  ebp
  !ROL   eax, 16  
  !ROL   edx, 16  
  !MOV   bl, al   
  !MOV   bh, dl   
  !MOV   esi, [v_dudx] 
  !MOV   ebp, [v_dvdx] 
  !SHL   esi, 16  
  !MOV   dl,  byte [v_dudx+2]   
  !SHL   ebp, 16  
  !MOV   dh,  byte [v_dvdx+2]   
  !LEA   edi, [edi+ecx]   
  !XOR   ecx, -1  
  !INC   ecx  
!SUIV:
  !MOV   al, [ebx]
  !ADD   edx, ebp 
  !ADC   bh, dh   
  !ADD   eax, esi 
  !ADC   bl, dl   
  !MOV   [edi+ecx], al
  !INC   ecx
  !JNZ   SUIV
  !POP   ebp  
Remarque : la fonction attend en entrée des paramètres dans des registres qui sont normalement utilisés par pure. Il faudrait soit les sauvegarder/restaurer, soit utiliser d'autres registres, ou des variables.
Anonyme

Message par Anonyme »

Tu veux te mettre au texture mapping?
Tu voit cela comment ?? 8O

Ca peut être n'importe quoi , mais sinon , oui , c'est pour faire de la rasterization software. :D

Merci , Djes. :wink:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Punaise, mais comment vous faites pour arriver à piger quelque chose dans tout ce charabia. 8O

Décidément, je comprendrai jamais rien à l'assembleur. :(

Code : Tout sélectionner

dudx.l = 0
dvdx.l = 0
  !PUSH  ebp
  !ROL   eax, 16 
  !ROL   edx, 16 
  !MOV   bl, al   
  !MOV   bh, dl   
  !MOV   esi, [v_dudx]
  !MOV   ebp, [v_dvdx]
  !SHL   esi, 16 
  !MOV   dl,  byte [v_dudx+2]   
  !SHL   ebp, 16 
  !MOV   dh,  byte [v_dvdx+2]   
  !LEA   edi, [edi+ecx]   
  !XOR   ecx, -1 
  !INC   ecx 
!SUIV:
  !MOV   al, [ebx]
  !ADD   edx, ebp
  !ADC   bh, dh   
  !ADD   eax, esi
  !ADC   bl, dl   
  !MOV   [edi+ecx], al
  !INC   ecx
  !JNZ   SUIV
  !POP   ebp 
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

+1 énorme respect !
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Chris a écrit :Punaise, mais comment vous faites pour arriver à piger quelque chose dans tout ce charabia. 8O

Décidément, je comprendrai jamais rien à l'assembleur. :(
C'est un a prori, l'assembleur est le plus simple des langages. Chaque ligne représente une action représentée par une instruction et des "opérandes", en général source et destination. Le problème est que les constructeurs nous rajoutent des instructions tout le temps, à tel point qu'il est maintenant devenu presque impossible de les connaître toutes.

Cpl.Bator> Il suffit en général de sauvegarder les registres sur la pile avec des "push", et les restaurer ensuite avec "pop". Mais sans connaître le contexte, je ne peux pas beaucoup t'aider. Mais pourquoi attaquer directement l'assembleur? Je pense que tu devrais plutôt faire un code simple, et l'optimiser par la suite.
Anonyme

Message par Anonyme »

le code de rastérization que j'ai chopé contenait un bout d'asm ( code d'origine en c / watcom ). pour le moment , mon code purebasic ne contient 0 lignes d'asm , et j'arrive à afficher en 1680x1050x32 un rendu 100% software avec + de 100fps ! :D avec une astuce toute bête ^^ , je ne cherche pas l'optimisation pour le moment , mais une organisation générale dans mon code purebasic , c'est là que je regrette la poo. :D
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Cpl.Bator a écrit :le code de rastérization que j'ai chopé contenait un bout d'asm ( code d'origine en c / watcom ). pour le moment , mon code purebasic ne contient 0 lignes d'asm , et j'arrive à afficher en 1680x1050x32 un rendu 100% software avec + de 100fps ! :D avec une astuce toute bête ^^ , je ne cherche pas l'optimisation pour le moment , mais une organisation générale dans mon code purebasic , c'est là que je regrette la poo. :D
Pas mal! :P

Oui la POO a des avantages, c'est certain! Rationaliser est le travail le plus délicat du programmeur : éviter les doublons dans son code, penser général plutôt que particulier, avoir une vue d'ensemble, créer des procédures "atomiques", sortes de briques qui pourront resservir sans aucune modification. Il faut être clair, précis, pour soi-même et pour les autres. Ce n'est pas évident, car d'un jour à l'autre le travail que l'on est capable de fournir est très différent, surtout pour des amateurs!

La POO oblige le (bon) programmeur à fabriquer des modules compacts dédiés, coupés du monde extérieur. Elle cache la réalité des choses afin d'effectuer des travaux à la complexité croissante (il suffit par exemple d'imaginer tout ce qui est caché à la personne qui tourne la clé de contact de sa voiture). Mais dans l'idéal, il faut que toute l'équipe qui a conçu chacun des objets soit toujours là à affiner leur design. La nature avait fait cela avant nous, et sur des milliards d'années le résultat est impressionnant.

Ainsi, la vie repose sur quelques briques essentielles, les acides aminés. Ce sont des sortes de "super-objets", qui a priori n'ont pas de vie propre. Pourtant, leurs propriétés physiques sont à ce point optimisées qu'il est possible avec un nombre restreint d'obtenir des millions de combinaisons, qui se combinent encore entre elles, etc. C'est pour cela qu'avec finalement peu d'instructions, l'ADN et l'ARN arrivent à coder des êtres particulièrement complexes, et même certains de leurs comportements!

Bon, je m'égare un peu! Tout ça pour dire que ces notions sont très importantes, oui. Par contre, la syntaxe utilisée par tel ou tel langage n'est qu'un outil pour réaliser cet objectif. J'ai programmé un petit moment en Java, avec beaucoup de plaisir! Mais l'ennui est que je perdais énormément en vitesse à cause des couches d'abstraction auxquelles je n'avais pas accès. On a le même problème avec DirectX et l'archi .Net. Chaque nouvelle couche encapsule les routines des couches inférieures, rajoutant des milliers de lignes de code inutiles, de vérification, de validation. Les erreurs (inévitables) commises lors de la conception mettent des années à se corriger, ou pas (je pense par exemple au garbage collector du java, ou à la compil jit qui fait ramer ton appli la première fois!). Et l'on peut commettre des erreurs dans chacune de ces couches, car il y a toujours des sections critiques (voir les threads!).

Ce qui m'énerve le plus, ce sont ces cours donnés à la fac où ces notions sont abordées dans un sens quasi religieux. Les étudiants se mettent à délirer sur les objets et les classes et perdent tout sens de la réalité! Enfin bon, s'ils font de la gestion, ce n'est pas trop grave... Mais qu'ils ne prétendent pas faire du temps réel comme ça! Déjà que je trouve qu'on devrait avoir honte de faire des jeux sous Windows!
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

On arrive a une ère ou la puissance de calcule dépasse l'entendement alors on se prive pas a faire des usines a gaz codé avec des pieds (qui a osé dire far cry ?).

Sinon l'avenir c'est les macro :lol:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

cha0s a écrit :Sinon l'avenir c'est les macro :lol:
non !

la femme !! parce que la femme est l'avenir de l'homme :lol: :lol:
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

les femmes et les macros, toute une histoire :)
===> Je suis plus là :P
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Help me please

Message par Warkering »

V'là d'la job pour notre cher ami Dobro! :mrgreen:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Help me please

Message par Backup »

encore une phrase apres un robot pour ne rien dire
et je vous laisse vous démerder avec les robots et le forum !

et en plus je fais un grand nettoyage de mes messages

faudrai voir a arrêter de vous foutre de ma gueule

[ re edit ]

tout ce que vous allez gagner, c'est d'avoir un forum remplis de messages de robots
dissémine au beau milieu d'autres messages...
ça va etre bien.... :roll:
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Help me please

Message par Warkering »

Mais je ne me foutais pas de ta gueule, c'était qu'une simple farce plate... :(
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Help me please

Message par Backup »

Warkering a écrit :Mais je ne me foutais pas de ta gueule, c'était qu'une simple farce plate... :(
ben oui j'ai que ça a faire moi de nettoyer vos messages en plus de ceux des robots ...
qu'elle bonne bagues...:roll:
Répondre