Важная информация

User Tag List

Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 33

Тема: Формат EXE/DLL для новой ОС

  1. #1
    Activist Аватар для Alex/AT
    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Благодарностей: 18
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Формат EXE/DLL для новой ОС

    Всем привет. Сейчас выложу описание формата ZE/ZL (ZX Executable/ZX Library) для новой ОС. Еще не закончено, некоторые моменты отсутствуют. Просьба комментировать, модифицировать и дополнять.

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

  3. #2
    Activist Аватар для Alex/AT
    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Благодарностей: 18
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Описание:

    ZE/ZL (ZX Executable/ZX Library) structure (as defined for version 1.00):

    02 'ZE' or 'ZL' signature
    02 ZX Executable version (0112h means 1.12)
    04 File length
    02 Number of segments (A)
    04*A Segment descriptors
    02 Number of imported functions (B)
    ??*B Imported function descriptors
    02 Number of code modifications (C)
    ??*C Code modifications
    ?? Segment data (sequential, by descriptors)
    ------------- ZL extensions begin
    02 Number of exported functions (D)
    ??*D Exported function descriptors

    Segment descriptor:

    02 Segment length
    01 Flags
    0: 0 = code segment, 1 = data segment
    1: for code: 0 = near segment (must be placed in the same page with
    previous segment), 1 = far segment (may be placed anywhere)
    for data: 0 = static segment (must be swapped to certain location),
    1 = dynamic segment (may be located anywhere)
    2: for code: 0 = frequent ISCs (active participant of intersegment
    calls), 1 = rare ISCs (rarely called by intersegment call)
    for data: 0 = swappable segment (may be swapped), 1 = must be
    placed with previous segment)
    3: 0 = normal segment, 1 = shared memory segment (in common RAM)
    4: 0 = normal segment, 1 = empty segment (filled with 0s, no real
    data in ZE image present)
    5-6: alignment (00 = 1 byte; 01 = 16 bytes; 10 = 256 bytes; 11 =
    4096 bytes)
    7: reserved

    Code modification:

    01 Modification type
    0: internal call/data access
    1: intersegment call
    2: intersegment data access
    3: intersegment pagination (swap)
    4: internal high byte
    5: internal low byte
    6: intersegment high byte
    7: intersegment low byte
    8: imported function (intersegment)
    9: imported data (intersegment)
    10: imported pagination (intersegment)
    11: imported high byte (intersegment)
    12: imported low byte (intersegment)
    13: system call
    14: system variable
    15: two addresses difference
    16: two addresses difference high byte
    17: two addresses difference low byte
    18-255: reserved

    Modification 0:

    02 Segment index
    02 Internal address (+0/1: added to segment start)

    Modification 1:

    02 Segment index
    02 Internal address (+0/1: replaced by call pointer,
    +2/3: added with segment start)

    Modification 2:

    02 Segment index
    02 Internal address (+0/1: added to segment start)
    02 Target segment index

    Modification 3:

    02 Segment index
    02 Internal address (+0/1: replaced by page number)
    02 Target segment index

    Modification 4:

    02 Segment index
    02 Internal address (+0: added to high result byte)
    02 Target internal address

    Modification 5:

    02 Segment index
    02 Internal address (+0: added to low result byte)
    02 Target internal address

    Modification 6:

    02 Segment index
    02 Internal address (+0: added to high result byte)
    02 Target segment index
    02 Target offset

    Modification 7:

    02 Segment index
    02 Internal address (+0: added to low result byte)
    02 Target segment index
    02 Target offset

    Modification 8:

    02 Segment index
    02 Internal address (+0/1: replaced by segment index (call ptr),
    +2/3: added to offset or replaced by 2xNOP)
    02 Imported function index

    Modification 9:

    02 Segment index
    02 Internal address (+0/1: added to target address)
    02 Imported function index

    Modification 10:

    02 Segment index
    02 Internal address (+0/1: replaced by page number)
    02 Imported function index

    Modification 11:

    02 Segment index
    02 Internal address (+0: added to high byte of the target address)
    02 Imported function index

    Modification 12:

    02 Segment index
    02 Internal address (+0: added to low byte of the target address)
    02 Imported function index

    Modification 13:

    02 Segment index
    02 Internal address (+0/1: replaced by segment index (call ptr),
    +2/3: added to offset or replaced by 2xNOP)
    02 System call index

    Modification 14:

    02 Segment index
    02 Internal address (+0/1: added to target address)
    02 System variable index
    Не сделано: Import/Export.

    Изменения: учел кое-какие пожелания из ответов ниже.
    Последний раз редактировалось Alex/AT; 02.04.2005 в 12:52.

  4. #3
    Activist Аватар для acidrain
    Регистрация
    01.03.2005
    Адрес
    Russia, Krasnodar
    Сообщений
    433
    Благодарностей: 1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    так, для информации =)

    частично перевел, но простите - не все =( - времени не хватило =)

  5. #4
    Activist Аватар для random
    Регистрация
    21.01.2005
    Адрес
    ссср
    Сообщений
    468
    Благодарностей: 117
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    предлагаю делать Exported Function и в обычных EXE. Простейший пример start, autostart.

  6. #5

    По умолчанию

    Цитата Сообщение от acidrain
    так, для информации =)

    частично перевел, но простите - не все =( - времени не хватило =)
    Стасик, разве ты не понял ещё? Тут пцшно-линухово-виндозный заговор, искусно организованный засланцами с пц =) Так что амижные идеи в спекооси не пройдут =))))

  7. #6
    Activist Аватар для Alex/AT
    Регистрация
    14.03.2005
    Адрес
    Russia, Saint-Petersburg
    Сообщений
    213
    Благодарностей: 18
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    предлагаю делать Exported Function и в обычных EXE. Простейший пример start, autostart.
    Да, вполне реально. EXE тоже сможет экспортить функции, которые, к тому же, могут быть подключены дочерними DLL. Обязательно учту при дальнейшем описании.

    Так что амижные идеи в спекооси не пройдут =))))
    Блин. Тут не то что амижные, тут вообще никакие не пройдут. Ибо адресное пространство у спека - всего лишь 16 бит... Вот поэтому приходится изголяться. А в доках по ханкам меня порадовала надпись "Неизвестная структура" =)

  8. #7
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от lvd
    Стасик, разве ты не понял ещё? Тут пцшно-линухово-виндозный заговор, искусно организованный засланцами с пц =) Так что амижные идеи в спекооси не пройдут =))))
    мля... вдарились в винду- подпихиваем линух. стали глядеть в сторону линукса- тоже не так, подавай амигу. а у многих она есть? я лично видел ее всего один раз в работе так что абсолютно ничего не знаю насчет принципов работы.

    а насчет доки. довольно интересно. Hunks == Chunks? они же секции в файлах PE-формата? всетаки надо стараться чтобы количестви лишней информации в бинарниках стремилось к минимуму- поэтому нет особого смысла в символьных названиях секций (насколько я понял, они присутствуют). если рассматривать то, что я до этого предлагал (модульную структуру), то можно также сказать, что она состоит из четырех ханков- таблица релокации, таблица символьных имен экспортируемых точек, таблица символьных имен импортируемых точек, код. в исполняемом файле можно оставить только первую и последнюю точки. для динамических библиотек еще нужна таблица экспортируемых точек, чтобы искать адреса во время исполнения. плюс к тому, структура таблицы релокации позволяет корректировать не только 16, но и 8-битные адреса (ld a,.metka:ld h,'font etc).

  9. #8

    По умолчанию

    Цитата Сообщение от Vitamin
    мля... вдарились в винду- подпихиваем линух. стали глядеть в сторону линукса- тоже не так, подавай амигу. а у многих она есть? я лично видел ее всего один раз в работе так что абсолютно ничего не знаю насчет принципов работы.
    Принципы работы такие же, как у любого компа - процессор + периферия =)

    А вообще ничто не мешает взять winUAE и с некоторой помощью других амижников разобраться до любого уровня =)

    а насчет доки. довольно интересно. Hunks == Chunks?
    Неа! =)

    всетаки надо стараться чтобы количестви лишней информации в бинарниках стремилось к минимуму- поэтому нет особого смысла в символьных названиях секций (насколько я понял, они присутствуют).
    Они присутствуют, если это объектник. А если 'эхешник', то отсутствуют. Формат файлов остаётся таким же.

    плюс к тому, структура таблицы релокации позволяет корректировать не только 16, но и 8-битные адреса (ld a,.metka:ld h,'font etc).
    Код:
     add a,a
     add a,a
     ld    l,a
     ld    h,'font/8
     add hl,hl
     add hl,hl
     add hl,hl

    Код:
     org #какой_попало
    
     ;some stuff
    
     ld h,'megatable
    
     ;more stuff
    
     org ($+255)&#FF00
    megatable
     db #xx,#yy,... ;256 bytes

    Код:
     ld   h,'megatable
    
     ; stuff
    
     inc h
     
     ;stuff
    
     dec h
     ;etc.
    
     ;stuff
    
     ld a,'microtable-'megatable
     add a,h
     ld h,a
    Всё подобное, как я понимаю, пойдёт на север? =)


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

  10. #9
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,031
    Благодарностей: 1426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от lvd
    Принципы работы такие же, как у любого компа - процессор + периферия =)
    ну да. и че гнать на закос под винду или юних- не понимаю. что есть, то и изучаем.

    Цитата Сообщение от lvd
    А вообще ничто не мешает взять winUAE и с некоторой помощью других амижников разобраться до любого уровня =)
    каких других? у нас в городе ни одной амиги насколько я знаю нету.

    Цитата Сообщение от lvd
    Неа! =)
    а похоже- как по названию, так и по смыслу %)

    Цитата Сообщение от lvd
    Код:
     add a,a
     add a,a
     ld    l,a
     ld    h,'font/8
     add hl,hl
     add hl,hl
     add hl,hl
    ld h,'font
    srl h
    srl h
    srl h

    другого варианта пока не вижу. это модули ис-доса могли в себе хранить выражения в ОПЗ. область применения не настолько высока чтоб изза них городить довольно сложную систему.


    Цитата Сообщение от lvd
    Код:
     org #какой_попало
    
     ;some stuff
    
     ld h,'megatable
    
     ;more stuff
    
     org ($+255)&#FF00
    megatable
     db #xx,#yy,... ;256 bytes
    если орг по круглому адресу- нет проблем. а гарантировать такое для приложений- вполне реально

    Цитата Сообщение от lvd
    Код:
     ld   h,'megatable
    
     ; stuff
    
     inc h
     
     ;stuff
    
     dec h
     ;etc.
    
     ;stuff
    
     ld a,'microtable-'megatable
     add a,h
     ld h,a
    Всё подобное, как я понимаю, пойдёт на север? =)
    __extern "diff",diff

    ldh_ a,diff
    ;ldl_ a,diff

    ;somewhere in other module
    __public "diff",constant,microtable-megatable
    ;__public "diff",constant,'microtable-'megatable


    Цитата Сообщение от lvd
    ...если честно, я вообще с трудом представляю, что в результате того, что вы задумали, выйдет. Сможет ли там существовать приложение уровня аласма, например? С какой скоростью оно будет работать?...
    сказывается разница менталитета. для спектрумиста ассемблер- это неразлучная парочка компилятор+редактор. и для полной шведской семьи +отладчик %)
    кто мешает сделать компилятор через командную строку? он тебе может через системные функции или библиотеки в нижней памяти что угодно компилить.

  11. #10
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Благодарностей: 104
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation Надо понимать

    что если вы собираетесь писать чтото новое (в частности ОСь) то вообще говоря прям счаз оно даст одни сплошные минусы:
    - Скорость работы приложений отнесённая к чистой производительности процессора будет ниже
    - Всё, что невозможно реализовать аппаратно будет реализовываться программно (читай - всё будет реализовано программно)
    - Всё потенциальные и реальные плюсы будут для этой системы существовать только после достаточно продолжительного периода времени, когда будет написано много приложений, драйверов и произведена достаточная отладка

    Исходя из этого мне непонятно, как вообще можно горить "это будет потреблять много ресурсов", если с самого начала все программные ресурсы будут отдаваться на откуп того, что в других системах реализовано аппаратно?
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

Страница 1 из 4 1234 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 180
    Последнее: 21.12.2008, 19:30
  2. Ответов: 2
    Последнее: 26.02.2005, 18:17
  3. Формат модулей Digital Studio?
    от Shiru в разделе Музыка
    Ответов: 3
    Последнее: 20.01.2005, 00:02

Ваши права

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