Portál AbcLinuxu, 25. května 2025 18:06
cat jonesforth.f - |./jonesforthPo drobné úpravě asemblerového zdrojáku a níže uvedeném slinkování stačí ./jonesforth. Hlavní trik, který budu nejspíš někdy hledat, je v linkování pomocí link scriptu (ld -T) s obsahem
INPUT(jonesforth.o) TARGET(binary) INPUT(jonesforth.f) OUTPUT_FORMAT(elf32-i386) OUTPUT(jonesforth) ENTRY(_start) PHDRS { headers PT_PHDR PHDRS ; text PT_LOAD FILEHDR PHDRS ; forth PT_LOAD ; data PT_LOAD ; } SECTIONS { . = SIZEOF_HEADERS; .text : { *(.text) } :text .forth : { text_start = . ; jonesforth.f ; text_end = .; } :forth . = 0x8000000; .data : { *(.data) } :data .bss : { *(.bss) } }kde jonesforth.o je výsledek kompilace assemblerového programu, jonesforth.f je soubor, který bude vložen,
text_start
a text_end
jsou hodnoty použité v .o, které linker nataví na začátek a konec uložení souboru v paměti, a _start
je začátek programu.
Pokud umí někdo tohle jednodušeji, budu rád, pokud v diskusi ukáže jak.
Tiskni
Sdílej:
objcopy --add-section forth=jonesforth.f jonesforth
.
Ale jak se dostat za běhu té sekci nějak jednoduše, to netuším.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.