Files
Sprinter-SDCC/third_party/solid-c/DOC/LD.RUS
T
snark13 c71e249a4e Add full compiler toolchain, libc, examples and reference docs
First substantive commit: the entire Sprinter C compiler tree on top of
the bare README+gitignore initial commit.

What's in here:
  bin/sprinter-cc        — driver script invoking SDCC + linker + mkexe
  libc/                  — Sprinter-specific libc layer over ESTEX/BIOS
                           (conio, gfx, io, mem, stdio + headers)
  runtime/               — crt0 variants (default/small/banked/minimal)
                           + heap + bank trampolines
  toolchain/             — mkexe (SprintEXE packer, C + tests)
  examples/              — 30 demo programs (gfx, file I/O, env, time, …)
  lib/Makefile           — builds the libc archive (sprinter.lib)
  docs/                  — converted Sprinter manuals + asm reference samples
  third_party/           — solid-c reference compiler dump + sdcc setup script
  release_docs/          — packaging / release notes

gitignore overhaul:
  • Drop dangerous blanket patterns: *.asm (would hide docs/samples/*.asm)
    and *.exe (case-insensitive match was hiding third_party/solid-c/*.EXE
    on macOS APFS).  Replaced with examples/*/*.{asm,exe,…} and lib/*.lib.
  • Restore tracking of toolchain/mkexe/tests/{one,big}.bin — those are
    INPUT fixtures, not build outputs.
  • Collapse the duplicated SDCC/C/Sdcc sections into one section per
    concern (build outputs / vendored / OS-junk).
  • Add .sprinter-cc-*/, build/ (catches lib/build/ too), .claude/.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 16:13:21 +03:00

139 lines
7.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Линкер
Линкер LD предназначен для сборки готовых программ или dll-библиотек
из отдельных объектных модулей. В качестве объектных модулей могут высту-
пать файлы rel-формата или библиотеки irl-формата (создаваемые библиотека-
рем ol.exe). Описание "rel", "irl" форматов смотрите в файлах "rel.rus" и
"irl.rus".
Строка вызова линкера имеет следующий формат:
LD [/keys] [outfile=] infile[/keys] [,infile[/keys] ...] [@ list]
где:
keys - опции линкера
outfile - имя выходного файла программы
infile - файл "rel" или "irl" формата
@ list - файл подстановок
Пример вызова линкера:
LD hello.rel
После выполнения данной команды получится файл "hello.exe".
При своей работе, линкер может создавать на диске временные файлы. Поэтому
для ускорения работы линкера рекомендуется использовать его на электронном
диске.
Опции линкера:
A использовать диск для сохранения симв. таблицы
D## адрес расположения DATA сегмента
E не вставлять EXE заголовок
Glabel задать метку 'label' в качестве стартовой
L поиск библиотечного файла (опция после имени файла)
P## адрес расположения CODE сегмента
Q вывести метки вида ?labels на экран
R## установить адрес загрузки (адрес ORG-а программы)
S вывести список меток на экран
T[type:ver] создать DLL библиотеку. Type - внутр. описание библы;
Ver - версия библы. Символ ":" разделяет параметры.
U заменить все "@" на "_" в именах меток
Y исключить DATA сегмент из выходного кода
X не создавать SYM файл
Создание DLL-библиотек
Для создания динамических библиотек служит опция "t". Обратите внимание,
что эта опция отменяет вставку exe-заголовка.
Отслеживается превышение максимального размера dll-библиотеки в 16 kB.
В этом случае линкер выдает предупреждающее сообщение, но линковка библи-
отеки не прерывается.
Создаваемые dll-библиотеки имеют сигнатуру заголовка "L1". Библиотека этого
формата отличается от формата "L0" только тем, что таблица перемещений начи-
нается сразу за концом "своего" кода.
Заголовок dll-библиотеки создается и прилинковывается автоматически, поэто-
му не надо резервировать для него место при написании ассемблерных текстов.
Более подробную информацию по dll-библиотекам смотрите в документации менед-
жера dll-библиотек.
Пример строки вызова линкера:
LD /TSymple library:0001 test.rel
где:
"Symple library" - Строка внутреннего описания библиотеки.
Строка описания может содержать пробелы.
Длина описания не должна превышать 16
символов, иначе линкер выдаст ошибку.
"0001" - Внутренний номер версии библиотеки. Может
содержать символы 0..9 и A..F (a..f).
"test.rel" - объектный файл, служащий для создания библиотеки.
Можно не указывать один из параметров (или все) опции, но символ ":" разде-
лителя параметров должен стоять всегда. В случае отсутствия описания - в
заголовке библиотеки будет стоять пустая строка. В случае отсутствия номера
версии - в заголовке будет стоять нулевой номер. Примеры вызова опции:
LD /Tsymple library: test.rel
LD /tМоя библиотека: test
LD /T:010B test.rel
LD /t:7 test
LD /t: test.rel
Обратите внимание, что строка внутреннего описания библиотеки начинается
сразу же за буквой "t" опции. Например, если написать
LD /T Example:0001 test.rel
то строка описания в заголовке библиотеки будет иметь вид " Example", т.е.
начинаться с пробела.
Файл подстановок
Файл подстановок служит для некоторой "автоматизации" процесса линковки
программ. Можно один раз создать файл подстановки и линковать программу, не
набирая каждый раз (возможно длинную) строку параметров линкера.
Файл подстановок может содержать всего одну строку агрументов или отдельные
аргументы могут начинаться с новой строки. В конце файла подстановок должна
стоять пустая строка. Размер файла подстановок ограничен до 256 байт и файл
может иметь любое имя.
Пример вызова линкера с файлами подстановок:
LD @ comp.txt
или
LD @list
Примеры файла подстановок.
Пример 1
test=prog,clib.irl/l/gxmain/x
Пример 2
test=prog,
clib.irl/l
/gxmain
/x
В данных примерах собирается программа с заданным именем "test". При лин-
ковке используется исходный объектный файл "prog.rel", библиотека "clib.irl"
и управление в программе передается на метку "xmain" (это необходимо делать
для всех программ, линкуемых с Си-библиотекой "clib.irl"). Опция "x" запре-
щает создание sym-файла.