| eXeL@B —› Основной форум —› turbo pascal и дизассемблирование | 
| Посл.ответ | Сообщение | 
| 
 | 
Создано: 14 ноября 2005 14:45  · Личное сообщение · #1 проблема такая. Мне дали программу на паскале. Я ее дизассемблировал.Вижу там вызов getmem в такой форме: 
где ds:di - как я понял это адрес указателя.Туда помещается адрес выделенной памяти. То есть тут передается адрес указателя и туда записывается значение адреса выделенной памяти.Сама функция getmem ничего не возвращает. Сделал похожую программу на паскале: 
и ее тоже дизассемблировал: 
А тут получается, что передается только размер выделяемой памяти,а адрес выделяемой памяти возвращается через dx:ax и уже потом записывается в указатель. Вообщем-то и названия функции дизассемблер определил как разные: call @GetMem$qm7Pointer4Word ; GetMem(Pointer &,Word) и call @GetMem$q4Word ; GetMem(var p: Pointer{DX:AX}; size: Word) Вот не понимаю, как сделать так, чтобы было так же как в исходной программе.Думал разные версии компиляторов(про ту хз, а мой - 7.0).Программа file analyser сказала, что версия компилятора 6.0 или 7.0.На всякий случай скачал 6.0 - но там оказалось то же самое. ![]()  | 
| 
 | 
Создано: 14 ноября 2005 15:01  · Личное сообщение · #2 jungle пишет: как сделать так, чтобы было так же как в исходной программе Во-первых не понятно зачем тебе это надо... Во-вторых если нужно так как в дизассемблере, то вырежи ту функцию и сделай это все ассемблерной вставкой...рипни эту процедуру. jungle пишет: Думал разные версии компиляторов Может там какая-то оптимизация была включена/отключена...? ![]()  | 
| 
 | 
Создано: 14 ноября 2005 15:23  · Личное сообщение · #3  | 
| 
 | 
Создано: 14 ноября 2005 16:01  · Личное сообщение · #4  | 
| 
 | 
Создано: 14 ноября 2005 16:55  · Личное сообщение · #5 jungle Дык продолжал бы свои вопросы в первой теме http://www.exelab.ru/f/action=vthread&topic=2979&forum=1&p age=-1 зачем новую создал? ----- once you have tried it, you will never want anything else ![]()  | 
| eXeL@B —› Основной форум —› turbo pascal и дизассемблирование | 






 Для печати