EvilAngel :
Bon, je pige rien là.
On m'avait dit que le FAT Engine s'arrangeait à ce niveau là pour des libs dynamiques.
Oui, mais
FAT Engine est un cas particulier. Il s'agit d'une librairie de plus de 32 KO. Et les programmes clients eux-mêmes sont aussi souvent très gros, donc on dépasse facilement les 64 KO en tout. Donc il faut couper en 2. Ceci est
le seul intérêt des DLLs
_nostub: pouvoir couper en 2 un programme qui dépasse les 64 KO. Tout le reste est un abus du système. Pour du partage de code, il y a le système de librairies statiques qui est prévu pour.
Enfin, les DLLs de TIGCC sont utilisées en assembleur GNU, on doit bien pouvoir s'en servir avec A68K ?!?!?
Oui, mais vu tes intentions, je ne te dirai certainement pas comment faire.
EvilAngel
:
Autre question: on peut exploiter le nouveau linker de TIGCC 0.95 et faire des BSS en NoStub sous A68k ?
Oui.
_tigcc_native: xdef _tigcc_native
__ref_all___startup_code: xdef __ref_all___startup_code
__ref_all___kernel_format_bss: xdef __ref_all___kernel_format_bss
;Tu peux aussi utiliser "compressed_format" au lieu de "kernel_format".
__ld_omit_bss_init: xdef __ld_omit_bss_init
;sauf si tu veux que tes sections BSS soient automatiquement initialisées à 0.
xdef __main
__main:
;Commence ton programme ici.
Au cas où tu te retrouves avec un saut vers
__main juste au-dessus du label, l'optimisation du linker va le virer. Et en plus, les BSS nécessitent du nettoyage à la fin, donc
__main est appelé par un
bsr, pas par un simple saut, donc il n'y a pas de saut inutile.