Секция ресурсов (FASM)

Тема в разделе "WASM.ASSEMBLER", создана пользователем KeSqueer, 23 сен 2007.

  1. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    KeSqueer
    Понятно. Для начала:
    То есть, ошибка возникает в случае попытки интерпретации адреса как число. Как обойти:
    Код (Text):
    1. macro   mov op1*, op2*
    2. {
    3.     local imm, val
    4.     imm = 0
    5.     if(op2 eqtype 0)
    6.         virtual at 0
    7.             dd  op2
    8.             load val dword from 0
    9.         end virtual
    10.         if val <= 0x7F & val >= -0x80
    11.             imm = 1
    12.         end if
    13.     end if
    14.     if op1 eqtype ptr & op2 eqtype ptr
    15.         push    op2
    16.         pop     op1
    17.     else if (op1 eqtype eax & imm <> 0)
    18.         push    op2
    19.         pop     op1
    20.     else
    21.         mov     op1, op2
    22.     end if
    23. }
    Правда, полезность этого макроса сомнительна, но раз уж хочется поиграться..
     
  2. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    IceStudent
    Спасибо, буду иметь в виду.
     
  3. Uri2

    Uri2 New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2004
    Сообщения:
    10
    Ничего подобного.

    Замена в fasm/examples/DIALOG/dialog.asm
    Код (Text):
    1. section '.idata' import data readable writeable
    на блок
    Код (Text):
    1. data import
    2. end data
    и
    Код (Text):
    1. section '.rsrc' resource data readable
    на
    Код (Text):
    1. data resource
    2. end data
    великолепно работает (и без выравнивания). главное, не забыть что импорты лежат в readable writeable области, а ресурсам достаточно readable.

    p.s. С иконкой не так. В винде есть бага (или была, не знаю исправлена ли), из-за которой иконку надо выкладывать обязательно в .rsrc секцию.
     
  4. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Uri2, выравнивание перед data resource обязательно для ресурсов с диалогами (по крайней мере, в 98), и ещё ресурсы с version info должны обязательно лежать в начале секции. Про иконку впервые слышу.
     
  5. Uri2

    Uri2 New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2004
    Сообщения:
    10
    98 вроде уже как лет 6 умерла :)

    Про иконку надо попробовать.
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    а далее сами себе противоречите ;)
     
  7. Uri2

    Uri2 New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2004
    Сообщения:
    10
    Попробовал. Все нормально :)

    Скорее всего у меня это в памяти тоже со времен 9x осталось...
     
  8. Uri2

    Uri2 New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2004
    Сообщения:
    10
    Это где?
    Было отрицание того, что нужна обязательная секция .rsrc и пример без секции с рабочими ресурсами.
     
  9. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Перед data resource поставил align 4 и все нормально стало. Не парьтесь.
     
  10. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Uri2
    потрудитесь протестировать под всеми существующими виндами начиная с вин98

    имя секции ресурсов "прошито" в одной из системных длл, но я забыл в какой точно

    о проблемах с иконкой разве не вы написали? иконка - не ресурсы? ;)
     
  11. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Asterix, вы, наверное, про typelib-ы, которые только в «.rsrc» должны лежать (имя секции «прошито» в OLEAUT32.DLL, это из статьи «Об упаковщиках в последний раз»), но скажите, вы часто пишете программы на фасме, в которых есть typelib-ы?!
     
  12. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    мы же не рассматриваем какую-то конкретную программу на какой-то конкретной системе,
    речь в общем про секцию ресурсов и особенностях ее расположения в файле, не нарушая
    принципов формата PE и с учетом особенностей Windows