User Tag List

Страница 28 из 32 ПерваяПервая ... 242526272829303132 ПоследняяПоследняя
Показано с 271 по 280 из 320

Тема: Библиотеки-модули-программы...

  1. #271

    Регистрация
    13.03.2005
    Адрес
    Пермь
    Сообщений
    294
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно обсудить понятие "язык загрузки", если оно понятно.

  2. #271
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #272

    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Давайте обсудим!
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  4. #273

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ага. Для начала, что такое "язык загрузки"?

  5. #274

    Регистрация
    13.03.2005
    Адрес
    Пермь
    Сообщений
    294
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Язык загрузки - это язык, на котором представлен объектный модуль, "формат объектного файла". Пример - файл с полуфабрикатом машинного кода и таблицами, указывающими куда в машинный код вставить значения внешних ссылок.

    Динамический компоновщик - это исполнитель языка загрузки.

    Динамическая компоновка - это исполнение "программы" на языке загрузки.

    Результат динамической компоновки - скомпонованный модуль.

    Цель - получить скомпонованный модуль.

    Сделать это можно самыми разнообразными способами, не только пропатчиванием полуфабриката.

    Наиболее радикально - генерировать конечный модуль по одному байту.

    Итак, предположим что объектный модуль - это программа на языке загрузки, целиком создающая код скомпонованного модуля.

    Какие будут идеи для такого языка загрузки?

    Вот парочка идей:
    1. Стековая машина. Может вычислять сложные выражения от внешних ссылок.
    2. Копирование кусков кода из уже сгенерированной части кода. Как в LZ77. Более компактный объектный модуль.

  6. #275

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от captain cobalt
    1. Стековая машина. Может вычислять сложные выражения от внешних ссылок.
    Это конечно хорошо, но придется задавать выражения в ОПЗ ручками. Или лепить транслятор в нее, что не есть хорошо.

    Цитата Сообщение от captain cobalt
    2. Копирование кусков кода из уже сгенерированной части кода. Как в LZ77. Более компактный объектный модуль.
    Нахрена? Сжатием пускай занимаются упаковщики!

    Я вообще придерживаюсь мнения, что линкер (сиречь исполнитель языка загрузки) должен быть как можно проще (то есть надежнее) и легче.

  7. #276

    Регистрация
    13.03.2005
    Адрес
    Пермь
    Сообщений
    294
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin
    Это конечно хорошо, но придется задавать выражения в ОПЗ ручками. Или лепить транслятор в нее, что не есть хорошо.
    А если эти значения нужны? Какова альтернатива?

    Вычислять выражения во время выполнения и увеличивать размер клиентского кода?
    Цитата Сообщение от Vitamin
    Нахрена? Сжатием пускай занимаются упаковщики!

    Я вообще придерживаюсь мнения, что линкер (сиречь исполнитель языка загрузки) должен быть как можно проще (то есть надежнее) и легче.
    Тогда попробуем пойти от упаковщика.

    Типичный распаковщик LZ77 занимается тем, что копирует байты из входного и выходного потока в выходной поток.

    А что если обучить его вычислять выражения от внешних символов и записывать их в поток?

    Распаковка и компоновка сможет быть выполнена за один проход!

    Какие ещё преимущества? Подход пропатчивания полуфабриката требует одновременно держать в памяти полуфабрикат, таблицы импорта и пропатчивания. Распаковывающий компоновщик может создавать код прямо поверх упакованного. Нужен лишь обычный для такого дела "разрыв" в десяток байт.

  8. #277

    Регистрация
    14.01.2005
    Адрес
    N.Novgorod
    Сообщений
    803
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от captain cobalt
    Итак, предположим что объектный модуль - это программа на языке загрузки, целиком создающая код скомпонованного модуля.
    Какие будут идеи для такого языка загрузки?
    ну я предлагаю использовать brainf*ck (http://www.muppetlabs.com/~breadbox/bf/) или whitespace (http://compsoc.dur.ac.uk/whitespace/)

    затем делаем виртуальную машину, для которой этот язык будет родным. потом надо реализовать эту машину в силиконе и поставить в качестве сопроцессора на панельку ПЗУ.

    Цитата Сообщение от captain cobalt
    Наиболее радикально - генерировать конечный модуль по одному байту.
    надо еще радикальней - по одному биту

    беда... запретить все книги про абстрактное программировани нафиг...

    Цитата Сообщение от Vitamin
    Нахрена? Сжатием пускай занимаются упаковщики!
    сжатие тут не причем... автор предлагал использовать ссылки "назад" на уже сгенереный код

  9. #278

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от captain cobalt
    Какие ещё преимущества? Подход пропатчивания полуфабриката требует одновременно держать в памяти полуфабрикат, таблицы импорта и пропатчивания. Распаковывающий компоновщик может создавать код прямо поверх упакованного. Нужен лишь обычный для такого дела "разрыв" в десяток байт.
    "Папа, а ты с кем только что сейчас разговаривал?" (С)

    Борщ отдельно, мухи отдельно. Отдельно распаковка (опциональная), отдельно компоновка (обязательная).
    А если имелось ввиду:
    Цитата Сообщение от elf/2
    сжатие тут не причем... автор предлагал использовать ссылки "назад" на уже сгенереный код
    то мы получаем обычный упаковщик (далеко не факт что оптимальный и стандартный). А как насчет того, что одинаковые куски кода патчатся по разному в разных местах?

    Таблицы релокации/экспорта/импорта должны быть. Без них никак.

  10. #279

    Регистрация
    13.03.2005
    Адрес
    Пермь
    Сообщений
    294
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от elf/2
    ну я предлагаю использовать brainf*ck (http://www.muppetlabs.com/~breadbox/bf/) или whitespace (http://compsoc.dur.ac.uk/whitespace/)

    затем делаем виртуальную машину, для которой этот язык будет родным. потом надо реализовать эту машину в силиконе и поставить в качестве сопроцессора на панельку ПЗУ.
    Это чтобы хоть что-нибудь сказать?
    Цитата Сообщение от elf/2
    надо еще радикальней - по одному биту
    Спековые распаковщики, такие как Hrust, распаковывают по одному байту, а упакованный поток в определённых случаях читают по одному биту.

    И широко используются при сборке софта. Файл размером на всю память распаковывается одну-две секунды.
    Цитата Сообщение от elf/2
    сжатие тут не причем... автор предлагал использовать ссылки "назад" на уже сгенереный код
    Результат - компактность объектного модуля. Сжатие.

  11. #280

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ЗЫ. Стою на асфальте я, в лыжи обутый...

Страница 28 из 32 ПерваяПервая ... 242526272829303132 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 9
    Последнее: 10.11.2024, 08:26
  2. Управление эмулятором из zx-программы
    от Spectre в разделе Эмуляторы
    Ответов: 42
    Последнее: 29.08.2006, 12:58
  3. Кто может помочь в создании программы
    от Лебедев в разделе Люди
    Ответов: 9
    Последнее: 22.07.2006, 09:41
  4. Программы для модемов
    от p@lex в разделе Софт
    Ответов: 21
    Последнее: 11.02.2006, 21:36

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •