Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Скомпилить ASM код [D7, WinXP]


QAZ ©   (24.06.18 15:37

есть некий код на асамблере с вызовом системной скрытой функции, как заставить его скомпилировать?
mov eax,[ebp-$08]
call @WStrLen
push eax
ошибка неизвестная функция


Sha ©   (24.06.18 16:26[1]

CALL System.@WStrLen


QAZ ©   (24.06.18 16:45[2]


> Sha ©   (24.06.18 16:26) [1]

хм, ок
а почему вообще пишется через @ ведь функцию зовут _WStrLen?


Sha ©   (24.06.18 17:42[3]

это к борланду )


QAZ ©   (24.06.18 17:50[4]

а вот такая операция никак не хочет компилится
jle +$56
пишет инвалидная комбинация опкода и операнда


Sha ©   (24.06.18 19:15[5]

нужна метка


QAZ ©   (24.06.18 19:52[6]

но такой код показывает сам делфи в цпу отладчике
если скопировать этот код и заменить на коректные метки, он компилится но не работает
без отладчика бесконечный цикл, а под делфей рунтаймеррор


Sha ©   (24.06.18 20:22[7]

ну и что?


Германн ©   (25.06.18 02:48[8]


> QAZ ©   (24.06.18 19:52) [6]
>
> но такой код показывает сам делфи в цпу отладчике
> если скопировать этот код и заменить на коректные метки,
>  он компилится но не работает

Редактор, компилятор и отладчик Дельфи разрабатывают разные люди. Их совместимость гарантируется при разработке программ на Дельфи.

>  QAZ ©   (24.06.18 17:50) [4]
>
> а вот такая операция никак не хочет компилится
> jle +$56

А она и не должна компилироваться. Это строка отладчика.


KSergey ©   (09.07.18 11:47[9]

короче, посмотри по отладчику на какую строку асм кода происходит переход - к этой строке поставь метку и метку впиши к jle


Дмитрий Белькевич ©   (31.07.18 19:00[10]

+$56 - это реальное значение текущего бинарника, а тебе нужна метка для того, что бы на неё перейти. если сильно хочется - можно и +$56 закодировать. другое дело - что может так получится, что ты не туда попадешь. как повезет. поэтому так и нельзя. а можно только по меткам.


Inovet ©   (31.07.18 23:56[11]

> [10] Дмитрий Белькевич ©   (31.07.18 19:00)

Вообще есть короткие и длинные переходы. Короткие как раз относительные, так что кусок можно переносить без изменений, если в нём ничего не менять. Или теперь уже все переходы одиниковые? Ясно дело, что надо метки использовать, а смещения пусть компилятор вычисляет, иначе зачем он нужен тогда.


Игорь Шевченко ©   (01.08.18 10:25[12]

Inovet ©   (31.07.18 23:56) [11]

Длинные тоже относительные, учить матчасть надо, прежде чем вылезать с предположениями.


Inovet ©   (01.08.18 21:09[13]

> [12] Игорь Шевченко ©   (01.08.18 10:25)

Ну здесь про условный переход, так что всегда короткий и относительный.


Inovet ©   (01.08.18 21:20[14]

> [13] Inovet ©   (01.08.18 21:09)
> короткий и относительный

относительный


имя   (02.08.18 03:04[15]

Удалено модератором


Игорь Шевченко ©   (02.08.18 10:19[16]

Inovet ©   (01.08.18 21:09) [13]

Дружище, в коде на Delphi, который показывает отладчик, команды перехода могут быть только двух и пятибайтные. Других там быть не может по определению, компилятор не умеет их генерировать. Так вот, и те и другие - относительные, в них содержится смещение относительно текущего адреса команды + ее длина.


имя   (03.08.18 03:02[17]

Удалено модератором


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо