Ajouter des fonctions a vb6 (etude, assembleur x86, compilation)

Soyez le premier à donner votre avis sur cette source.

Vue 7 590 fois - Téléchargée 501 fois

Description

[C'est plus une etude qu'une source. Elle permet d'ajouter des fonctions a vb6 d'une maniere plutot inhabituelle]

Tout d'abord lisez la presentation avant d'emettre un avis !

Donc comme je le dis plus haut, cette source est un essai dans
le cadre d'une etude sur la compilation avec C2/Link qui a montré
plusieurs phenomenes etonnants... je ne vais pas vous exposer ici
toute la these mais je vais prendre un petit exemple simple que vous
pourrez tester vous meme :

(peut etre connaissez-vous deja tout cela, mais pensez a ceux qui ne le savent
pas encore...)

- Ouvrez un nouveau projet vb, ajoutez un module tapez le texte suivant :

Option Explicit

Sub Main()
MsgBox AddressOf A
MsgBox AddressOf B
End Sub

Function A(ByVal n As Long) As Long
n = n + 1
End Function

Function B(ByVal v As Long) As Long
v = v + 1
End Function

- executez le dans l'ide
- compilez et executez le !
- puis comparez le resultat !

VB a tout simplement fusionné les deux fonctions en une seule !
logique puisqu'elles font la meme chose... mais plutot inattendue pour
un programmeur qui s'attend a avoir deux procedures distinctes !
cela vient du mode d'optimisation du code (vitesse/taille).
Tout ça pour dire qu'il ne faut presumer de rien

L'idée de la source est donc de créer des fonctions qui ne font
rien dans l'ide, un canvas de fonction en qlq sorte pour allouer
un espace memoire et un type de declaration pour pouvoir, une fois
le projet compilé placer dans cette meme memoire notre propre
code que l'on aura decomposé en sequence.

Le probleme : pour créer cet espace memoire il faut connaitre
quelle va etre le taille du canvas une fois compilé. Pour le
connaitre on va compilé notre projet avec plusieurs hypotheses.
Puis une fois créé on va "dumper" la memoire de ces fonctions
pour les placer au niveau du point d'entrée d'un faux programme
pour observer le code grace au debug de visual studio !

Une fois tout cela fait, il ne nous reste plus qu'a créer des sequences
en assembleur ou en c pour les integrer dans nos canevas et donc créer
des fonctions conpletement nouvelles.

Dans le zip vous trouverez la source des qlq fonctions teste
comme les decalages de bit ou la copie de memoire
vous trouverez egalement l'outil qui sert a placer du code dans
le point d'entrée d'un prog et un exemple d'utilisation des fonctions

Voici un exemple qui transforme un nombre signé en
non signé :

Value = adv_BitOff(Value,31)

Un autre exemple qui remplit un tableau de n byte avec la valeur 1

dim Tbl(32) as byte
adv_MemoryFill varptr(Tbl(0)),1,32

Compte tenu des differents systemes en vente aujourd'hui je ne garantis
pas le bon fonctionnement du programme ni meme des sources

Source / Exemple :


'Dans le zip
(Désolé pour les fautes)

Conclusion :


J'ai bcp hesité a poster cette source car je sais pertinement
que certains ne vont pas "comprendre" les objectifs réels de
de celles-ci mais vont voir en elle rien d'autre qu'un code
douteux et completement inutile...

Alors je ne vous demande pas de comprendre ma façon de coder
mais juste de moderer vos propos et considerer le labeur

Cordialement,

EB

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
14
Date d'inscription
lundi 29 décembre 2003
Statut
Membre
Dernière intervention
3 janvier 2004

Bravo, c'est un super travail!

on en est plus à savoir si c'est util ou pas...c'est excellent
Messages postés
267
Date d'inscription
lundi 22 septembre 2003
Statut
Membre
Dernière intervention
27 novembre 2005

moustachu> t'as du pot, l'aspirine viens de feter ses 150 ans ! :-D
Messages postés
70
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
17 septembre 2006

Interressant et toujours bon à savoir

Bravo
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

J'arrive un peu tard dans le débat, mais il me semble que l'encyclopédie universalis est faite en VB, du moins la version 5. Il y a d'autres applis commerciales en VB (et qui tournent bien...)

En tous cas, bravo EBArtSoft, je suis sûr d'une chose, c'est que j'ai pas tout compris et que ça va encore me faire mal à la tête !!

++
Messages postés
412
Date d'inscription
mercredi 19 décembre 2001
Statut
Membre
Dernière intervention
7 avril 2008
1
c'est de la haute voltige... bravo
Afficher les 20 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.