(surtout pour la doc et les ebook)
La recherche a retourné 61 résultats
Aller sur la recherche avancée
- sam. 14/nov./2015 16:34
- Forum : ASM
- Sujet : Organisation de la mémoire au moment de l'amorçage.
- Réponses : 5
- Vues : 6994
Re: Organisation de la mémoire au moment de l'amorçage.
Merci
(surtout pour la doc et les ebook)
(surtout pour la doc et les ebook)
- ven. 13/nov./2015 16:17
- Forum : ASM
- Sujet : Organisation de la mémoire au moment de l'amorçage.
- Réponses : 5
- Vues : 6994
Re: Organisation de la mémoire au moment de l'amorçage.
S'il y en a que ca interesse (même 5ans après le post) :
En gros c'est le bordel et t'as aucune garantie.
J'me suis amusé a coder un bout de bootloader (que je ne finirai probablement jamais) en ASM pur et que j'ai commenté a fond.
Je ne fais pas tous les tests possibles et imaginable et je me base ...
En gros c'est le bordel et t'as aucune garantie.
J'me suis amusé a coder un bout de bootloader (que je ne finirai probablement jamais) en ASM pur et que j'ai commenté a fond.
Je ne fais pas tous les tests possibles et imaginable et je me base ...
- ven. 13/nov./2015 15:10
- Forum : ASM
- Sujet : Grosse perte de perf... PB -> ASM
- Réponses : 7
- Vues : 7498
Re: Grosse perte de perf... PB -> ASM
5ans plus tard j'ai perdu mon code source et j'arrive pas a relire le peu que j'ai pu poster.
Serieux. j'ai codé ca moi ? Je suis jaloux de mon moi d'il y a 5ans.
Serieux. j'ai codé ca moi ? Je suis jaloux de mon moi d'il y a 5ans.
- jeu. 28/janv./2010 22:28
- Forum : Débutants
- Sujet : Galere avec les pointeurs, PokeF, Memory Viewer
- Réponses : 4
- Vues : 901
Re: Galere avec les pointeurs, PokeF, Memory Viewer
Y'a du mieux
Structure RandomStruct
r.f
EndStructure
Global Dim randomBuffer.RandomStruct(plots*2)
Define *pointeur.randomStruct = @randomBuffer()
For k = 0 To plots*2
Define.f tmp
tmp = (Random(RandMax)/(RandMaxBy4)) - 2.0
*pointeur\r = tmp
*pointeur + SizeOf(randomStruct)
Next k
J ...
Structure RandomStruct
r.f
EndStructure
Global Dim randomBuffer.RandomStruct(plots*2)
Define *pointeur.randomStruct = @randomBuffer()
For k = 0 To plots*2
Define.f tmp
tmp = (Random(RandMax)/(RandMaxBy4)) - 2.0
*pointeur\r = tmp
*pointeur + SizeOf(randomStruct)
Next k
J ...
- jeu. 28/janv./2010 22:05
- Forum : Débutants
- Sujet : Galere avec les pointeurs, PokeF, Memory Viewer
- Réponses : 4
- Vues : 901
Re: Galere avec les pointeurs, PokeF, Memory Viewer
Heuuu ... ca rame grave !!
Ca fait un appel de fonction a chaque Peek et a chaque Poke, c'est ignoble.
Comment je peux y acceder directement ?
Parce que la... je voulai accelerer mon code et j'ai perdu 20% de perf rien qu'a cause de ca ...
Ca sert a rien que je continue a optimiser si j'ai pas ...
Ca fait un appel de fonction a chaque Peek et a chaque Poke, c'est ignoble.
Comment je peux y acceder directement ?
Parce que la... je voulai accelerer mon code et j'ai perdu 20% de perf rien qu'a cause de ca ...
Ca sert a rien que je continue a optimiser si j'ai pas ...
- jeu. 28/janv./2010 21:43
- Forum : Débutants
- Sujet : Galere avec les pointeurs, PokeF, Memory Viewer
- Réponses : 4
- Vues : 901
Re: Galere avec les pointeurs, PokeF, Memory Viewer
Ha bein oui j'avais raté un truc
c'est pas (plots*SizeOf(Float)) mais (k*SizeOf(Float))
Quel cretin je fais ...
c'est pas (plots*SizeOf(Float)) mais (k*SizeOf(Float))
Quel cretin je fais ...
- jeu. 28/janv./2010 21:28
- Forum : Débutants
- Sujet : Galere avec les pointeurs, PokeF, Memory Viewer
- Réponses : 4
- Vues : 901
Galere avec les pointeurs, PokeF, Memory Viewer
Un petit bout de code simple
Global *RandomBuffer = AllocateMemory(2 * plots * SizeOf(Float))
[...]
For k = 0 To plots*2
Define.f tmp
tmp = (Random(RandMax)/(RandMaxBy4)) - 2.0
PokeF(*RandomBuffer + (plots*SizeOf(Float)),tmp)
Next k
J'utilise le variable viewer pour recuperer l'adresse ...
Global *RandomBuffer = AllocateMemory(2 * plots * SizeOf(Float))
[...]
For k = 0 To plots*2
Define.f tmp
tmp = (Random(RandMax)/(RandMaxBy4)) - 2.0
PokeF(*RandomBuffer + (plots*SizeOf(Float)),tmp)
Next k
J'utilise le variable viewer pour recuperer l'adresse ...
- lun. 04/janv./2010 16:51
- Forum : ASM
- Sujet : Optimisation : Trouver la valeur max d'un tableau
- Réponses : 5
- Vues : 3763
Re: Optimisation : Trouver la valeur max d'un tableau
J'ai fini par optimiser tout ca a coup de SSE et d'utilisation maline des registre SSE dans la boucle :)
pour repondre a la premiere question de ce thread, il existe une instruction SSE4 pour aider a la recherche d'une valeur max d'un tableau.
Mais comme je n'ai pas de cpu qui gere le SSE4 ... j ...
pour repondre a la premiere question de ce thread, il existe une instruction SSE4 pour aider a la recherche d'une valeur max d'un tableau.
Mais comme je n'ai pas de cpu qui gere le SSE4 ... j ...
- lun. 04/janv./2010 16:33
- Forum : ASM
- Sujet : Convention d'appel de fonction PB_ (PB 4.40 x64)
- Réponses : 10
- Vues : 5718
Re: Convention d'appel de fonction PB_ (PB 4.40 x64)
Je viens de trouver ca sur un site :
Bien que la pile utilise des quadruples mots (8 octets soit 64 bits), le pointeur de pile (RSP) doit toujours être aligné sur un multiple de 16 avant d'appeler une API.
Ref. : AMD64 ABI Ref. : http://msdn2.microsoft.com/en-us/library/ew5tede7(VS.80).aspx ...
Bien que la pile utilise des quadruples mots (8 octets soit 64 bits), le pointeur de pile (RSP) doit toujours être aligné sur un multiple de 16 avant d'appeler une API.
Ref. : AMD64 ABI Ref. : http://msdn2.microsoft.com/en-us/library/ew5tede7(VS.80).aspx ...
- lun. 04/janv./2010 13:13
- Forum : ASM
- Sujet : Convention d'appel de fonction PB_ (PB 4.40 x64)
- Réponses : 10
- Vues : 5718
Re: Convention d'appel de fonction PB_ (PB 4.40 x64)
Ha bein j'avais bien trouvé, une partie du moins :)
The x87 register stack is unused. It may be used, but must be considered volatile across function calls. All floating point operations are done using the 16 XMM registers.
The arguments are passed in registers RCX, RDX, R8, and R9.
If the ...
The x87 register stack is unused. It may be used, but must be considered volatile across function calls. All floating point operations are done using the 16 XMM registers.
The arguments are passed in registers RCX, RDX, R8, and R9.
If the ...
- lun. 04/janv./2010 13:02
- Forum : ASM
- Sujet : Convention d'appel de fonction PB_ (PB 4.40 x64)
- Réponses : 10
- Vues : 5718
Re: Convention d'appel de fonction PB_ (PB 4.40 x64)
Il manque aucune feature.
Mais comme l'optimisation consiste a modifier le code fasm generé par purebasic pour qu'il soit plus rapide, c'est plus simple de bosser directement sur le fichier FASM que de remplacer les fonctions purebasic par de l'InlineASM.
Bon par contre ca veut dire qu'on ne peut ...
Mais comme l'optimisation consiste a modifier le code fasm generé par purebasic pour qu'il soit plus rapide, c'est plus simple de bosser directement sur le fichier FASM que de remplacer les fonctions purebasic par de l'InlineASM.
Bon par contre ca veut dire qu'on ne peut ...
- lun. 04/janv./2010 10:25
- Forum : ASM
- Sujet : Convention d'appel de fonction PB_ (PB 4.40 x64)
- Réponses : 10
- Vues : 5718
Re: Convention d'appel de fonction PB_ (PB 4.40 x64)
Merci pour l'info, je vais lire ca.
Je force justement le 64bits car derriere je patche le code FASM (j'ai arreté l'inline ASM, pas assez souple) et utilise des instructions SSE,2,3 x64.
La portabilité c'est pas mon soucis :)
Au passage, il est tres facile d'optimiser du code FASM genere par ...
Je force justement le 64bits car derriere je patche le code FASM (j'ai arreté l'inline ASM, pas assez souple) et utilise des instructions SSE,2,3 x64.
La portabilité c'est pas mon soucis :)
Au passage, il est tres facile d'optimiser du code FASM genere par ...
- lun. 04/janv./2010 7:45
- Forum : ASM
- Sujet : Convention d'appel de fonction PB_ (PB 4.40 x64)
- Réponses : 10
- Vues : 5718
Re: Convention d'appel de fonction PB_ (PB 4.40 x64)
Visiblement ca serait : rcx (1er arg), rdx (2eme arg), r8 (3eme arg), r9 (4eme arg), et le reste dans la stack.
et la valeur de retour dans rax.
et la valeur de retour dans rax.
- lun. 04/janv./2010 7:21
- Forum : ASM
- Sujet : Convention d'appel de fonction PB_ (PB 4.40 x64)
- Réponses : 10
- Vues : 5718
Re: Convention d'appel de fonction PB_ (PB 4.40 x64)
J'ai changé le code en :
; Plot(i,j,iter)
MOVZX rcx,r13w ; arg i
MOVZX rdx, r14w ; arg j
MOV r8, qword [v_iter]
CALL PB_Plot2
Sachant que j'avais optimisé plus haut pout que r13w et et r14w contiennent i et j :)
C'est quand meme plus propre, et ca marche :)
Mais ca ne m'aide pas pour ...
; Plot(i,j,iter)
MOVZX rcx,r13w ; arg i
MOVZX rdx, r14w ; arg j
MOV r8, qword [v_iter]
CALL PB_Plot2
Sachant que j'avais optimisé plus haut pout que r13w et et r14w contiennent i et j :)
C'est quand meme plus propre, et ca marche :)
Mais ca ne m'aide pas pour ...
- lun. 04/janv./2010 6:50
- Forum : ASM
- Sujet : Grosse perte de perf... PB -> ASM
- Réponses : 7
- Vues : 7498
Re: Grosse perte de perf... PB -> ASM
Pour l'instant j'ai multiplié la vitesse du code par 4 