Portál AbcLinuxu, 24. prosince 2025 10:03
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.