J'utilise Turbo C++ 3.1.Turbo C++: Générer du code objet pour la fonction malloc
J'ai quelques modules d'assemblage qui nécessitent le malloc de la bibliothèque standard C. Je dans mes fichiers .asm J'ai:
extern _malloc:proc
Je veux générer un fichier objet qui contient malloc(). Pour utiliser l'éditeur de liens et créer un fichier exécutable. Exemple:
tasm /zi bmlib.asm // create object file: bmlib.obj
tasm /zi bmlibt.asm // create object (which contains main program): bmlibt.obj
? //Generate object file for malloc: malloc.obj
tlink /v3 bmlibt bmlib malloc // link all modules
bmlibt.exe // Execute the program
Si vous voulez utiliser le 'malloc()' de l'exécution, vous devrez lier dans la bibliothèque d'exécution (puisque 'malloc()' a certainement son propre ensemble de dépendances). Vous devrez également vous assurer que l'exécution est initialisée correctement. Vous trouverez peut-être plus facile de lier vos fichiers d'assemblage à un petit programme C qui ne fait rien d'autre qu'un point d'entrée pour votre programme en langage assembleur. Ou peut-être implémenter un simple 'malloc()' –
Merci. La pointe du fichier C est géniale. Pour implémenter mon propre malloc, je devrais utiliser des interruptions pour demander de l'espace à l'OS, n'est-ce pas? – blaze
C'est probablement une façon de le faire. J'imagine qu'il existe un moyen d'obtenir l'éditeur de liens pour configurer les en-têtes .exe afin qu'il y ait un pool de mémoire lorsque le processus est chargé, mais cela fait longtemps que je n'ai pas travaillé avec MS-DOS. des détails sur comment cela pourrait fonctionner. –