purebasic->ass->purebasic ?
purebasic->ass->purebasic ?
peut t'on actuelement generer un listing assembleur (une routine) , a partir d'un listing Purebasic , pour pouvoir reintegrer ce listing assembleur dans le listing
purebasic ??
purebasic ??
le purebasic permet d'integrer de l'assembleur dans des lignes !
je voulais savoir s'il est possible de sauver un listing purebasic en
assembleur (/COMMENTED)
pour pouvoir integre ce listing ASS dans le listing purebasic
par exemple tu fait une petite routine purebasic
tu la genere en assembleur!
peut t'on réimporter cette routin assembleur dans un source purebasic
(heu ! la je sais plus comment expliquer mieux )
je voulais savoir s'il est possible de sauver un listing purebasic en
assembleur (/COMMENTED)
pour pouvoir integre ce listing ASS dans le listing purebasic
par exemple tu fait une petite routine purebasic
tu la genere en assembleur!
peut t'on réimporter cette routin assembleur dans un source purebasic
(heu ! la je sais plus comment expliquer mieux )
Normalement Oui mais ça nécessite des modifs et ce n'est pas asussi simple (je ne vois pas l'intéret puisque le code PB sera tranformé en asm)Dobro a écrit :le purebasic permet d'integrer de l'assembleur dans des lignes !
je voulais savoir s'il est possible de sauver un listing purebasic en
assembleur (/COMMENTED)
pour pouvoir integre ce listing ASS dans le listing purebasic
par exemple tu fait une petite routine purebasic
tu la genere en assembleur!
peut t'on réimporter cette routin assembleur dans un source purebasic
(heu ! la je sais plus comment expliquer mieux )
PB nomme en asm les procedures avec des étiquettes (label) comme ceci
Code : Tout sélectionner
JMP _EndProcedure0
_Procedure0:
Code : Tout sélectionner
_EndProcedure0:
Code : Tout sélectionner
_Procedure1
_Procedure2
_Procedure3
_ProcedureX
le JMP _EndProcedure0 permet lorsque le code s'exécute, de ne pas lancer la procedure, car elle ne s'exécutera qu'avec un call
Donc si tu réintègres une procedure asm dans le code PB, il faut vérifier que son étiquette n'existe pas et si oui, il faut changer le numéro des étiquettes de début et de fin. Dès lors que c'est de l'asm, il fau utiliser un CALL _ProcedureX pour lancer cette procedure. Il faut veiller si tu modifies le code asm de la procedure avant de l'intégrer au code PB, de :
Ne pas modifier l'ordre des variables locales en modifiant la valeur ajouté à esp pour y accéder
N'utiliser que les registres eax et edx (sinon il faut sauvegarder les autres avant de les utiliser)
Bien faire attention aux modifs du registre esp
Si des variables globales sont utilisées par cette routine asm, il faut qu'elles existent dans le code PB, les déclarer avant la routine asm
A mon avis si tu ne modifies pas le code asm, tu as intérêt à utiliser Taibite pour te faire une lib, c'est plus simple et plus sur, le code asm sera le même puique c'est le compilateur PB qui le génère, Tailbite organise ce code pour en faire différents fichiers
Moi qui fait de l'ASM, j'ai comparé avec l'ASM généré par la compilation d'un programme 100% PB. Et bien, il n'y a pas photo : le code ASM dégéré n'est pas optimisé (ce qui est normal d'ailleur).
Donc, le mieux est d'insérer ton propre code asm optimisé dans un programme PB. Moi perso, je gagne parfois 80% de vitesse (?!!)
Donc, le mieux est d'insérer ton propre code asm optimisé dans un programme PB. Moi perso, je gagne parfois 80% de vitesse (?!!)
Oui, ca m'interresse aussi parceque plutot que de reinventer la roue,
en asm, je prefere récuperer la routine purebasic et l'optimiser moi-même... Si qqu'un a une solution pour récuperer le code asm généré par le compilateur...
en asm, je prefere récuperer la routine purebasic et l'optimiser moi-même... Si qqu'un a une solution pour récuperer le code asm généré par le compilateur...
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
il te faut utiliser "(/COMMENTED) " voir doc section "Utiliser le compilateur SHELL":D
/COMMENTED : créé un fichier de sortie '.asm' commenté en même temps que l'exécutable. Ce fichier peut être ré-assemblé ultérieurement après l'avoir modifié selon vos besoins. Cette option est à destination des programmeurs avancés.
Perso je préfére (de loin) le fameux PureASM de notre ami Erix14!
http://home.tele2.fr/erix14/PureASM.htm
http://home.tele2.fr/erix14/PureASM.htm
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
...d'où on attend une MAJ et des news...
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Je viens de tomber sur ce genial POST de SROD qui correspond un peu à la demande de DOBRO, ça marche du tonnerre
Trois ans pour une reponse, de quoi me plaint-je ?
Quand vous ne me repondez pas dans la journée
Trois ans pour une reponse, de quoi me plaint-je ?
Quand vous ne me repondez pas dans la journée
Code : Tout sélectionner
; http://www.purebasic.fr/english/viewtopic.php?t=30864
; A COMPILER EN "commentedASM.exe"
; Déposer dans le repertoire compiler
; Creer un outil personalisé avec le menu Outils/Outils personalisés
; Taper dans ligne de commande : CommentedASM.exe
; Taper dans arguments : "%TEMPFILE"
; Taper un nom pour cet outil, moi, j'ai choisi : Viewver ASSEMBLEUR
; Cocher Démarrer caché
file$=ProgramParameter(0)
dir$ = GetPathPart(file$)
If file$ And FileSize(file$)>0
Compiler = RunProgram(#PB_Compiler_Home+"\Compilers\pbcompiler", Chr(34)+file$+Chr(34)+" /commented", dir$, #PB_Program_Hide|#PB_Program_Wait)
If Compiler
dir$+"PureBasic.asm"
RunProgram("notepad.exe", dir$,"")
EndIf
EndIf