sa sert a quoi l'asm

sa sert a quoi l'asm - ASM - Programmation

Marsh Posté le 09-04-2009 à 13:32:17    

bonjour,  
je voudrais savoir un petit renseignement c'est a propos de l'asm :
a quoi sert t'il , qu'est ce qu'on peut faire avec et pouvez vous me donnez un tuto qu'il l'expliqueris bien  pour un debutant  
merci

Reply

Marsh Posté le 09-04-2009 à 13:32:17   

Reply

Marsh Posté le 09-04-2009 à 13:44:29    

max1395 a écrit :

a quoi sert t'il


À programmer directement dans le langage du microprocesseur (ou presque), ce qui peut faire gagner en performance (au prix de la productivité et de la maintenabilité). C'est également essentiel pour faire appel à des fonctionalités du CPU qui ne sont pas nécessairement exposées dans les langages de plus haut niveau.

max1395 a écrit :

qu'est ce qu'on peut faire avec


Ce qu'on veut, comme avec la majorité des langages de prog.

max1395 a écrit :

et pouvez vous me donnez un tuto qu'il l'expliqueris bien  pour un debutant


MP Harkonnen, c'est le spécialiste ASM de prog.


Message édité par masklinn le 09-04-2009 à 13:44:38

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 09-04-2009 à 14:55:19    

Reply

Marsh Posté le 09-04-2009 à 15:46:38    

Reply

Marsh Posté le 28-04-2009 à 03:36:01    

C'est encore utiliser l'Asm ? :D
 
Perso. j'avais fais un peu d'Asm X86, j'avais bien aimé :x mais la seule fois où j'ai vu de l'asm dans une appli. c'était juste une petite portion de code intégrer au seins d'un programme C++.
 
Vu la puissance des machines actuel j'ai encore du mal à voir son intérêt, il boss où Harkonen pour coder en asm ?


---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
Reply

Marsh Posté le 28-04-2009 à 07:17:08    

manu f a écrit :

C'est encore utiliser l'Asm ? :D
 
Perso. j'avais fais un peu d'Asm X86, j'avais bien aimé :x mais la seule fois où j'ai vu de l'asm dans une appli. c'était juste une petite portion de code intégrer au seins d'un programme C++.
 
Vu la puissance des machines actuel j'ai encore du mal à voir son intérêt, il boss où Harkonen pour coder en asm ?


 
[:prozac]
 
Encore un commentaire d'étudiant ça :o
La puissance n'a rien à voir avec la choucroute ... tu m'aurais dit "vu les compilateurs" j'aurais moins rigoler comme un bossu dans ma tasse de café :o
L'asm ca sert point, même si t'en écris aps, savoir ce qui se passe à ce niveau te permet sovuent d'éviter d'écrire des anneries au niveau du dessus.
 
<troll>
Mais, bon, allez, retourne à ton ASP :o
</troll>

Reply

Marsh Posté le 28-04-2009 à 08:22:05    

Joel F a écrit :


 
[:prozac]
 
Encore un commentaire d'étudiant ça :o
La puissance n'a rien à voir avec la choucroute ... tu m'aurais dit "vu les compilateurs" j'aurais moins rigoler comme un bossu dans ma tasse de café :o
L'asm ca sert point, même si t'en écris aps, savoir ce qui se passe à ce niveau te permet sovuent d'éviter d'écrire des anneries au niveau du dessus.
 
<troll>
Mais, bon, allez, retourne à ton ASP :o
</troll>


Je suis pas autant caler que toi ou autre dinosaure de ce forum donc faut m'excuser si je dis des bêtises :p
 
Mais avant de sortir ma phrase je voyais l'utilité d'utiliser de l'asm pour optimiser certaines partie sensible d'un programme (un gros calcul, un truc comme ça) et lorsqu'on éxecute un programme c'est la puissance de la machine qui joue un rôle, j'arrive pas à voir ce que le compilateur viens faire là dedans si tu peux m'expliquer :
 
ps : j'aime pas l'asp :]

Message cité 1 fois
Message édité par manu f le 28-04-2009 à 08:23:35

---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
Reply

Marsh Posté le 28-04-2009 à 09:19:12    

manu f a écrit :


Je suis pas autant caler que toi ou autre dinosaure de ce forum donc faut m'excuser si je dis des bêtises :p
 
Mais avant de sortir ma phrase je voyais l'utilité d'utiliser de l'asm pour optimiser certaines partie sensible d'un programme (un gros calcul, un truc comme ça) et lorsqu'on éxecute un programme c'est la puissance de la machine qui joue un rôle, j'arrive pas à voir ce que le compilateur viens faire là dedans si tu peux m'expliquer :
 
ps : j'aime pas l'asp :]


Lorsque tu compiles ton code, tu n'as pas la maitrise de ce qui est réellement généré au final. En clair, rien ne te permet de dire que le compilateur ne rajoute pas des "instructions" ici ou là qui dans l'absolu n'ont pas d'interet dans le strict cadre de ton application. Donc si tu as une partie réellement critique dans ton appli, l'ASM se pose en bon choix souvent.
Et sinon, dire que de nos jours "avec la puissance des machines" ca sert plus à rien etc, c'est un peu bidon désolé. Car c'est avec ce genre de raisonnement qu'on se retrouve avec des applis optimisées avec les pieds, voire pas optimisées du tout :o
Quand je vois ce que certains font avec un Commodore 64 (8bit 1MHz) je dis que certains devraient en prendre de la graine ;)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-04-2009 à 10:03:35    

Ah ok, je voyais pas les choses comme ça au niveau du compilo.  :sweat:  
 
Sinon je suis d'accords avec toi que certain vont coder des applis n'importe comment avec ce genre de raisonnement.  
Mais dans ce cas précis je partais du principe que le développeur faisais un minimum attention, ce que je voulais dire de manière moins direct c'est qu'actuellement une optimisation extrême dans une appli. est assez secondaire comparé à il y a quelques années. (et pour moi introduire du asm dans un code est une manière d'optimisation extrême)


Message édité par manu f le 28-04-2009 à 10:06:13

---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
Reply

Marsh Posté le 28-04-2009 à 10:08:28    

manu f a écrit :

C'est encore utiliser l'Asm ? :D
 
Perso. j'avais fais un peu d'Asm X86, j'avais bien aimé :x mais la seule fois où j'ai vu de l'asm dans une appli. c'était juste une petite portion de code intégrer au seins d'un programme C++.
 
Vu la puissance des machines actuel j'ai encore du mal à voir son intérêt, il boss où Harkonen pour coder en asm ?


Je ne code pas en assembleur au boulot, mais j'en ai fait pendant des années quand j'étais demomaker sur Amiga.
Et si les développeurs utilisaient un peu plus d'assembleur dans leurs programmes actuels, on éviterait des portages ratés style GTA4 qui se permet le luxe de ramer chez moi malgré mon E8400, ma 9800 GTX et mes 4 Go de RAM. Quand je vois ça, ça me dépite...
Si l'assembleur t'intéresse : http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2009 à 10:08:28   

Reply

Marsh Posté le 28-04-2009 à 10:19:15    

Ca devait être énorme comme boulot demomaker sur Amiga, je comprends mieux maintenant pourquoi à chaque fois que je vois le mot assembleur sur les forums d'HFR il y a toujours quelqu'un qui te cite :D
 
Merci pour le lien au passage.


---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
Reply

Marsh Posté le 28-04-2009 à 10:40:25    

manu f a écrit :

Ca devait être énorme comme boulot demomaker sur Amiga, je comprends mieux maintenant pourquoi à chaque fois que je vois le mot assembleur sur les forums d'HFR il y a toujours quelqu'un qui te cite :D
 
Merci pour le lien au passage.


Enorme je dirais pas, je dirais même moins complexe sachant que l'assembleur Motorola (68xxx) est plus "simple" que son équivalent x86


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-04-2009 à 10:41:07    

manu f a écrit :

Ca devait être énorme comme boulot demomaker sur Amiga, je comprends mieux maintenant pourquoi à chaque fois que je vois le mot assembleur sur les forums d'HFR il y a toujours quelqu'un qui te cite :D
 
Merci pour le lien au passage.


C'était pas un boulot, mais un loisir, une passion, qui m'a fait rencontrer des gens géniaux de toutes nationalités :)
L'assembleur, c'est un art. Même si effectivement, ça n'est guère plus utilisé dans l'industrie aujourd'hui (en dehors de la programmation d'OS ou de drivers, et encore...), c'est toujours utile de le connaître, comme dit Joël. Et ce n'est pas parce que les OS d'aujourd'hui verrouillent l'accés au matériel, que l'assembleur est mort. On peut toujours en faire de façon plus "système", mais ça n'empêche pas d'utiliser le processeur et ses différents jeux d'instruction pour faire des optims de fou :D
 
Je fréquente ce site, qui est très intéressant : http://www.asmcommunity.net/


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2009 à 10:42:15    

SICKofitALL a écrit :


Enorme je dirais pas, je dirais même moins complexe sachant que l'assembleur Motorola (68xxx) est plus "simple" que son équivalent x86


Plus simple, et surtout bien plus élégant... Les processeurs Motorola sont faits pour être programmés en assembleur, c'est la meilleure école, hélas révolue :'(


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2009 à 10:51:05    

manu f a écrit :

Ca devait être énorme comme boulot demomaker sur Amiga, je comprends mieux maintenant pourquoi à chaque fois que je vois le mot assembleur sur les forums d'HFR il y a toujours quelqu'un qui te cite :D
 
Merci pour le lien au passage.


Cadeau :D

Code :
  1. ;  (Ü) ( ) Ü ) ( )   256b intro by baze/3SC for Syndeecate 2001   use NASM to
  2. ;  ßÛß ÛÜÛ ÛÛÛ ÛÛÜ   loveC: thanks, Serzh: eat my socks dude ;]   compile the
  3. ;  ( ) ( ) ( ) ( )   e-mail: baze@stonline.sk, web: www.3SC.sk    source code
  4. [org 100h]
  5. [segment .text]
  6. SCREEN equ 160
  7. PIXBUF equ 204h
  8. mov al,13h
  9. int 10h
  10. push word 0A000h
  11. pop es
  12. mov ax,cs
  13. add ah,10h
  14. mov fs,ax
  15. xor cx,cx
  16. PAL1 mov dx,3C8h
  17. mov ax,cx
  18. out dx,al
  19. inc dx
  20. sar al,1
  21. js PAL2
  22. out dx,al
  23. mul al
  24. shr ax,6
  25. out dx,al
  26. PAL2 mov al,0
  27. out dx,al
  28. jns PAL3
  29. sub al,cl
  30. shr al,1
  31. out dx,al
  32. shr al,1
  33. out dx,al
  34. PAL3 mov bx,cx
  35. mov [fs:bx],bl
  36. loop PAL1
  37. TEX mov bx,cx
  38. add ax,cx
  39. rol ax,cl
  40. mov dh,al
  41. sar dh,5
  42. adc dl,dh
  43. adc dl,[fs:bx+255]
  44. shr dl,1
  45. mov [fs:bx],dl
  46. not bh
  47. mov [fs:bx],dl
  48. loop TEX
  49. fninit
  50. fldz
  51. MAIN add bh,8
  52. mov di,PIXBUF
  53. fadd dword [byte di-PIXBUF+TEXUV-4]
  54. push di
  55. mov dx,-80
  56. TUBEY mov bp,-160
  57. TUBEX mov si,TEXUV
  58. fild word [byte si-TEXUV+EYE]
  59. mov [si],bp
  60. fild word [si]
  61. mov [si],dx
  62. fild word [si]
  63. mov cl,2
  64. ROTATE fld st3
  65. fsincos
  66. fld st2
  67. fmul st0,st1
  68. fld st4
  69. fmul st0,st3
  70. fsubp st1,st0
  71. fxch st0,st3
  72. fmulp st2,st0
  73. fmulp st3,st0
  74. faddp st2,st0
  75. fxch st0,st2
  76. loop ROTATE
  77. fld st1
  78. fmul st0,st0
  79. fld st1
  80. fmul st0,st0
  81. faddp st1,st0
  82. fsqrt
  83. fdivp st3,st0
  84. fpatan
  85. fimul word [si-4]
  86. fistp word [si]
  87. fimul word [si-4]
  88. fistp word [si+1]
  89. mov si,[si]
  90. lea ax,[bx+si]
  91. add al,ah
  92. and al,64
  93. mov al,-5
  94. jz STORE
  95. shl si,2
  96. lea ax,[bx+si]
  97. sub al,ah
  98. mov al,-16
  99. jns STORE
  100. shl si,1
  101. mov al,-48
  102. STORE add al,[fs:bx+si]
  103. add [di],al
  104. inc di
  105. inc bp
  106. cmp bp,160
  107. EYE equ $-2
  108. jnz TUBEX
  109. inc dx
  110. cmp dx,byte 80
  111. jnz TUBEY
  112. pop si
  113. mov di,(100-SCREEN/2)*320
  114. mov ch,(SCREEN/2)*320/256
  115. rep movsw
  116. mov ch,SCREEN*320/256
  117. BLUR dec si
  118. sar byte [si],2
  119. loop BLUR
  120. in al,60h
  121. cbw
  122. dec ax
  123. jnz near MAIN
  124. mov al,03h
  125. int 10h
  126. db 41,0,0C3h,3Ch
  127. TEXUV db "baze"


 
Si tu compiles ca (avec NASM comme précisé dans les commentaires) tu obtiens un executables (un COM) de 256 octets qui te donne une zoulie animation temps réel :
http://pouet.net/screenshots/3397.gif
 
La même chose via un langage de plus haut niveau et son compilateur associé te produira immanquablement un executable plus gros.
 
Download direct : http://pouet.net/prod.php?which=33 [...] omments=-1


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-04-2009 à 11:07:05    

J'ajouterai, pour entrer dans le débat, qu'il n'y a pas que la programmation sur PC !
L'assembleur est encore utilisé relativement fréquemment en info industrielle, dans l'embarqué, programmation de PIC et compagnie.


Message édité par kao98 le 28-04-2009 à 11:07:31

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 28-04-2009 à 11:14:57    


C'est tout aliasé [:sadnoir]

kao98 a écrit :

J'ajouterai, pour entrer dans le débat, qu'il n'y a pas que la programmation sur PC !
L'assembleur est encore utilisé relativement fréquemment en info industrielle, dans l'embarqué, programmation de PIC et compagnie.


Et pour les OS, et pour les backends de compilos

Message cité 1 fois
Message édité par masklinn le 28-04-2009 à 11:15:59

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-04-2009 à 11:16:36    

masklinn a écrit :


C'est tout aliasé [:sadnoir]


 

masklinn a écrit :


Et pour les OS, et pour les backends de compilos (tu peux pas toujours bootstrapper)


c'est en 320x200 et ca passe pas par le GPU
et on s'en fout que ca soit aliasé c'est pas le sujet :D


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-04-2009 à 11:17:08    

SICKofitALL a écrit :

c'est en 320x200 et ca passe pas par le GPU
et on s'en fout que ca soit aliasé c'est pas le sujet :D


Bah non on s'en fout pas, c'est moche :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-04-2009 à 11:20:28    

masklinn a écrit :


Bah non on s'en fout pas, c'est moche :o


Ben je t'en prie, vu que tu as le code source ajoutes nous une petite routine de filtrage bilinéaire  [:maxmaker]  


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-04-2009 à 11:21:57    

SICKofitALL a écrit :

Ben je t'en prie, vu que tu as le code source ajoutes nous une petite routine de filtrage bilinéaire  [:maxmaker]


Chuis sûr qu'en cherchant un peu tu peux trouver des intro 256 un peu plus sexy que ça :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-04-2009 à 12:43:00    

http://pouet.net/prod.php?which=49856 ? :D
http://pouet.net/screenshots/49856.png

Message cité 1 fois
Message édité par SICKofitALL le 28-04-2009 à 12:43:24

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-04-2009 à 12:44:41    


Tu vois quand tu veux [:ddr555]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-04-2009 à 13:10:19    

SICKofitALL a écrit :


Lorsque tu compiles ton code, tu n'as pas la maitrise de ce qui est réellement généré au final. En clair, rien ne te permet de dire que le compilateur ne rajoute pas des "instructions" ici ou là qui dans l'absolu n'ont pas d'interet dans le strict cadre de ton application. Donc si tu as une partie réellement critique dans ton appli, l'ASM se pose en bon choix souvent.

 

T'as aussi le droit de savoir ce que générer tonc ompilo ets codé proprement en conséquence.
Après faut arreter de se toucher le zizi sur ces histories de perfs en assembleurs. A l'herue actuelle, sur
des machines modernes, les perfs viennent principalement du fait que ton code de calcul est gentil avec les caches
et/ou bien parallèlisés. Et pour ça, pas besoin d'assembleur :o

Message cité 1 fois
Message édité par Joel F le 28-04-2009 à 13:11:06
Reply

Marsh Posté le 28-04-2009 à 13:17:34    

Moi je dis faut faire des benchs :D


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-04-2009 à 13:40:03    

Joel F a écrit :

T'as aussi le droit de savoir ce que générer tonc ompilo


En C sur ICC c'est probablement simple, en C++ sur GCC ou en Haskell sur GHC c'est quand même plus tendu :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-04-2009 à 13:40:39    

SICKofitALL a écrit :


Si tu compiles ca (avec NASM comme précisé dans les commentaires) tu obtiens un executables (un COM) de 256 octets qui te donne une zoulie animation temps réel :
http://pouet.net/screenshots/3397.gif


j'ai compilé avec nasm, mais la console supporte pas le fullscreen sous Vista. Comment je peux faire?

Reply

Marsh Posté le 28-04-2009 à 13:42:53    

Dosbox


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2009 à 13:43:22    

Harkonnen a écrit :

DosboxFormattes et réinstalles un DOS


 [:aloy]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-04-2009 à 13:44:16    

Ok je formate et j'installe dos  :jap:

Reply

Marsh Posté le 28-04-2009 à 13:47:05    

ngkreator a écrit :

Ok je formate et j'installe dos  :jap:


tu rigoles ? [:what has been seen]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2009 à 13:48:01    

Harkonnen a écrit :


tu rigoles ? [:what has been seen]


 [:cerveau sadnoir]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-04-2009 à 13:50:47    


s'il accepte de se passer de son et d'USB, pourquoi pas après tout [:ddr555]
et de disque dur aussi, je doute fort qu'il existe des drivers SATA pour DOS :whistle:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2009 à 13:51:44    

Trêve de plaisanteries, dès que j'ai trouvé où se trouve les ":" en qwerty je vais admirer ça.
 
D'ailleurs, il existe des navigateurs pour DOS?


Message édité par ngkreator le 28-04-2009 à 13:53:06
Reply

Marsh Posté le 28-04-2009 à 13:54:19    

Arachne


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2009 à 13:57:22    

Ca marche [:volta] j'ai une belle anim merci.  Par contre j'ai  1 image par seconde doit y avoir un problème.  
 
Pour le navigateur au moins on doit pas choper de spywares avec celui là.


Message édité par ngkreator le 28-04-2009 à 14:00:58
Reply

Marsh Posté le 28-04-2009 à 14:11:56    

T'es sous dosbox ? Si oui, tu as augmenté le nombre de cycles ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2009 à 14:21:18    

Oui sous dosbox et effectivement en augmentent le nombre de cycles ça marche impec. C'est marrant de se dire que ces quelques lignes suffisent à générer une telle animation. C'est plus le même esprit avec les gros executables de maintenant.

Reply

Marsh Posté le 28-04-2009 à 14:29:10    

Et oui... L'époque où les programmeurs codaient avec le récap des instructions sous les yeux, leur taille en octets et le nombre de cycles qu'elles utilisent, est révolu, et c'est dommage :'(
Dans le topic spécial démo dont j'ai donné le lien plus haut, j'expose la méthode qui était utilisée pour calculer le nombre maxi d'objets qu'une animation pouvait supporter avant de ralentir (temps machine).


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2009 à 14:33:33    

Harkonnen a écrit :

Et oui... L'époque où les programmeurs codaient avec le récap des instructions sous les yeux, leur taille en octets et le nombre de cycles qu'elles utilisent, est révolu


Bah non, si tu fais du real time (e.g. embedded), tout spécialement hard real time, c'est toujours ça [:spamafote]

 

C'est juste que toi tu préfères faire de l'oracle et du C# [:spamafote]

 

Et même en JV, quand t'as un budget de 16ms pour le rendu intégral de ta frame en HD, ben t'as intérêt à comprendre le code qui sort de ton compilo [:spamafote]

Message cité 1 fois
Message édité par masklinn le 28-04-2009 à 14:35:38

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed