Ассемблер+Паскаль.Снова

Тема в разделе "WASM.RESEARCH", создана пользователем _jungle_, 16 ноя 2005.

  1. _jungle_

    _jungle_ New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2005
    Сообщения:
    21
    Адрес:
    Russia
    Почему в паскале прототип функции такой:

    procedure subaab(var arg0,arg2,arg4:integer);

    а в ida функциия начинается так:
    Код (Text):
    1.  
    2.  sub_17          proc near               ; CODE XREF: PROGRAM+24p
    3. seg000:0017
    4. seg000:0017 arg_0           = dword ptr  4  <----!!!!
    5. seg000:0017 arg_4           = dword ptr  8  <----!!!!
    6. seg000:0017 arg_8           = dword ptr  0Ch <----!!!!
    7. seg000:0017
    8. seg000:0017                 push    bp
    9. seg000:0018                 mov     bp, sp
    10. seg000:001A                 xor     ax, ax
    11. ...
    12.  


    Почему двойное слово???Даже по ф1 в хелпе написано, что integer=16bit
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Хз. Может быть потому, что параметры передаются по ссылке и в стек запушены адреса? :)
     
  3. _jungle_

    _jungle_ New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2005
    Сообщения:
    21
    Адрес:
    Russia
    блин и правда, что-то я не подумал.Спасибо.

    А как же сделать, чтобы передача была по значению(как в паскале реализовать?).Наверное тут уж настройки компилятора хм...
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    var убери
     
  5. _jungle_

    _jungle_ New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2005
    Сообщения:
    21
    Адрес:
    Russia
    все.сам разобрался.надо делать в формальных параметрах без var :)

    procedure subaab(arg0,arg2,arg4:integer);



    EDIT:спасибо rmn.про вар понял воспользовавшись яндексом.

    Еще раз спасибо rmn