В доке сказано, что компилятор и утилиты и него ГНУ-тые.
Так вот, можно сделать так, чтоб в одном исходнике разные подпрограммы распологались в разных сегментах памяти?
Например, вот пример простого скрипта линковщика, в котором котором програма непрерывна:
Код
MEMORY
{
ILMB (x) : ORIGIN = 0x0, LENGTH = 0x1000
DLMB (i) : ORIGIN = 0x2000, LENGTH = 0x1000
DOPB (w) : ORIGIN = 0x8000, LENGTH = 0x30000
}
{
ILMB (x) : ORIGIN = 0x0, LENGTH = 0x1000
DLMB (i) : ORIGIN = 0x2000, LENGTH = 0x1000
DOPB (w) : ORIGIN = 0x8000, LENGTH = 0x30000
}
А вот часть примера, с частями программы в разных областях памяти:
Код
MEMORY
{
LMB : ORIGIN = 0x0, LENGTH = 0x1000
OPB : ORIGIN = 0x8000, LENGTH = 0x5000
}
...
.text : {
/* Uncomment the following line to add specific files in the opb_text */
/* region */
/* *(EXCLUDE_FILE(file1.o).text) */
/* Comment out the following line to have multiple text sections */
*(.text)
} >LMB
...
.opb_text : {
/* Uncomment the following line to add an executable section into */
/* opb memory */
/* file1.o(.text) */
} >OPB
...
{
LMB : ORIGIN = 0x0, LENGTH = 0x1000
OPB : ORIGIN = 0x8000, LENGTH = 0x5000
}
...
.text : {
/* Uncomment the following line to add specific files in the opb_text */
/* region */
/* *(EXCLUDE_FILE(file1.o).text) */
/* Comment out the following line to have multiple text sections */
*(.text)
} >LMB
...
.opb_text : {
/* Uncomment the following line to add an executable section into */
/* opb memory */
/* file1.o(.text) */
} >OPB
...
Может можно все-таки как то с помощью директив компилятора куски кода по секциям рассовывать?
Например, в VisualDSP (Analog Devices), это делается с помощью section("memory") перед объектом.