.data ?

Тема в разделе "WASM.BEGINNERS", создана пользователем asmlamo, 27 июл 2007.

  1. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.742
    Чем отличается определение:

    .data

    от

    .data?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    секция определенных и неопределенных данных. под первую в ехе отводится место, под вторую нет
     
  3. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Great
    Да только если ресурсов за этим не следует.
    Кстати вот код типа
    Код (Text):
    1. Start:
    2.         ....
    3. TempBuffer:
    4. dd 100 dup (?)
    5. end Start
    так вот tasm+tlink место в файле экономит и под TempBuffer не выделяет если нет ресурсов, а вот masm всегда выделяет место
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    PROFi
    Какие ресурсы? Те, что в .rsrc? Так они же в другой секции вообще... Или Вы о чём?
     
  5. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Quantum

    Секция ресурсов может называться как угодно, но если их не вставлять в exe, и все неинициализированные переменные разместить в сегменте кода т.е. сегмента данных нет вообще то даже код

    Код (Text):
    1. init SEGMENT PAGE public USE32 'ICODE'
    2.     ASSUME  cs:init
    3. Start:
    4.         mov eax, [esp]  
    5.                                    ....
    6.                               ......
    7. Buffer:
    8. dd 100000h dup (?)
    9. init ENDS
    10. END Start
    будет занимать в конечном exe 4096 байт
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    PROFi
    Теоретически. Чтоб иконка в эксплорере нормально отображалась, называть её иначе не рекомендуется.

    При стандартном выравнивании он будет занимать на диске 512 байт. Но при чём тут ресурсы, а?
     
  7. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Quantum
    А при том что долбанный tlink их всегда размещает после секции кода (короче в конце файла) и если указанный выше вайл содержит секцию ресурсов, то секция кода раздвигается по умолчанию до невиданных размеров (хотя практически этого можно избежать). Столкнулся с этим при написании драйверов.
    А если секции ресурсов нет, то и секция кода содержит только инициализированные данные и имеет малый размер.
     
  8. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    PROFi
    Хмм... Я тоже использовал tlink32 для создания экзешников с ресурсами и неинициализированными данными, но чтоб сам факт присутствия ресурсов влиял на размер секции кода/данных... в общем, не замечал такого. Всё равно, это можно назвать только багом конкретного линкера.
     
  9. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Quantum

    Да это баг tlink32.
     
  10. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    я не врубился:
    зачем объединять .data? и .text ? что вы выигрывате, секции не создаётся в файле, только описатель тобишь IMAGE_SECTION_HEADER, так вам жалко что-ли эти 24h на его описание? там всё равно выравнимание и ничего не выигрывается
     
  11. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    rain
    28h :) Но я бы тоже не советовал совмещать код и данные, т.к. перезаписываемая секция кода или исполнимая секция данных - это не есть хорошо.
     
  12. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    А с чего бы это винда трактовала секция по её имени (.rsrc), а не по флагам/атрибутам?
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    asmfan
    Поиск по форуму ".rsrc oleaut32". Или UPX FAQ.
     
  14. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    В коде oleaut32 жестко зашита строка ".rsrc", мелкомягкие грамотеи, блин...

    Кстати, а в Висте этот баг исправлен?
     
  15. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Twister
    зачем?
     
  16. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Баг этот навсегда, т.к. EXE-шники добжны быть переносимы на другие винды.
     
  17. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Почетай "Об упаковщиках в последний раз 1"
     
  18. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    О как... спасибо, не знал.
    Просто никогда подобных проблем не возникало, даже если в FASM'e использовал не отдельную секцию, а DATA/END DATA объявления. Думал разбор ведётся по талице директорий, а тут грабли подложили.
    [added]
    Вот пример - работает и отображает нормально на XP sp2
     
  19. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Mental_Mirror
    Не в этом случае. Если будут смотреть не на имя секции, а на тип, то совместимости не убудет. Или имеется ввиду совместимость багов? :)
     
  20. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    rain

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


    т.к. перезаписываемая секция кода или исполнимая секция данных - это не есть хорошо.

    Код (Text):
    1.         mov eax,cr0
    2.                  and eax,0FFFEFFFFh
    3.         mov cr0,eax
    Почему? ведь CPU это позволяет, а с учетом атрибутов секции кои можно установть на чтение-запись и исполнение (+невыгружаемая, но это лишнее). Другое дело если язык программирования Си и т.д., тут столько мусора создается ....

    Кстати очередной баг - если в драйвере нет ни одного релокейшена, то такой драйвер не загружается.