Помогите определить опции компилятора

Тема в разделе "LANGS.C", создана пользователем Shooshpanchik, 16 май 2007.

  1. Shooshpanchik

    Shooshpanchik Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    117
    Не могу понять что было высстановленно в компиляторе что дало такой код

    (программа разбита на 186 сегментов):

    Код (Text):
    1. mov     ax, seg seg141
    2. push    ax
    3. mov     ax, 0A2h ; 'в'
    4. push    ax              ; path
    5. call    _unlink_0
    6. pop     cx
    7. pop     cx
    У меня дает:

    Код (Text):
    1. push    path            ; path
    2. call    _unlink
    3. pop     cx
    ну и естественно у него в unlink
    path = dword ptr 6
    у меня
    path = word ptr 4

    ЗЫ, программа имеет только MZ заголовок но умеет обращаться с WinClipboard.

    Какие опции были выставленны в компиляторе ?
     
  2. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Покопай в сторону near/far модели памяти.
     
  3. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Shooshpanchik
    Скорее всего модель памяти во втором коде small, в во втором, large.

    MZ заголовок но умеет обращаться с WinClipboard
    Из dos v3+ приложений можно общаться с буфером обмена windows при помощи INT 2fH 17xxH: Windows Clipboard Functions

    Какой компилятор?
     
  4. Shooshpanchik

    Shooshpanchik Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    117
    Уверен что это Borland C++ (это написанно в бинарнике)
    Предположительно 3.1 , выдающая функцию start один в один.
    С моделью памяти прояснилось, просто реверснутый кусочек еще слишком маленький.
    Удивило вот это:
    Код (Text):
    1. xor     ax, ax
    2. push    ax
    3. xor     ax, ax
    4. push    ax
    5. xor     ax, ax
    6. push    ax
    7. call    far ptr unk_453DD; после анализа дало "call    sub_453DD"
    8. add     sp, 6
    Как я ни выставлял оптимизацию все равно получаю

    Код (Text):
    1. push    large 0
    2. push    0
    3. call    sub_10308
    4. add     sp, 6
     
  5. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Shooshpanchik
    Может быть в проект для bc++v3.1 добавили объектные модули (или библиотеку) сделанные(ную) другим компилятором (не обязательно Си). Я когда-то давно (во времена dos) по прологу/эпилогу подпрограмм отличал BorlandC/MicroSoftC/SymantecC.
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Shooshpanchik
    Может это старенький Turbo-C?
     
  7. Shooshpanchik

    Shooshpanchik Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    117
    Я специально проверил, поставил Borland Turbo C 3.0 и о чудо, xor ax, ax/push ax
    дает именно он, хотя в бинарнике присутсвует надпись "Borland C++" и код у точки входа практически такой же...