-
есть некий код на асамблере с вызовом системной скрытой функции, как заставить его скомпилировать?
mov eax,[ebp-$08]
call @WStrLen
push eax
ошибка неизвестная функция
-
CALL System.@WStrLen
-
> Sha © (24.06.18 16:26) [1]
хм, ок
а почему вообще пишется через @ ведь функцию зовут _WStrLen?
-
это к борланду )
-
а вот такая операция никак не хочет компилится
jle +$56
пишет инвалидная комбинация опкода и операнда
-
нужна метка
-
но такой код показывает сам делфи в цпу отладчике
если скопировать этот код и заменить на коректные метки, он компилится но не работает
без отладчика бесконечный цикл, а под делфей рунтаймеррор
-
ну и что?
-
> QAZ © (24.06.18 19:52) [6]
>
> но такой код показывает сам делфи в цпу отладчике
> если скопировать этот код и заменить на коректные метки,
> он компилится но не работает
Редактор, компилятор и отладчик Дельфи разрабатывают разные люди. Их совместимость гарантируется при разработке программ на Дельфи.
> QAZ © (24.06.18 17:50) [4]
>
> а вот такая операция никак не хочет компилится
> jle +$56
А она и не должна компилироваться. Это строка отладчика.
-
короче, посмотри по отладчику на какую строку асм кода происходит переход - к этой строке поставь метку и метку впиши к jle
-
+$56 - это реальное значение текущего бинарника, а тебе нужна метка для того, что бы на неё перейти. если сильно хочется - можно и +$56 закодировать. другое дело - что может так получится, что ты не туда попадешь. как повезет. поэтому так и нельзя. а можно только по меткам.
-
> [10] Дмитрий Белькевич © (31.07.18 19:00)
Вообще есть короткие и длинные переходы. Короткие как раз относительные, так что кусок можно переносить без изменений, если в нём ничего не менять. Или теперь уже все переходы одиниковые? Ясно дело, что надо метки использовать, а смещения пусть компилятор вычисляет, иначе зачем он нужен тогда.
-
Inovet © (31.07.18 23:56) [11]
Длинные тоже относительные, учить матчасть надо, прежде чем вылезать с предположениями.
-
> [12] Игорь Шевченко © (01.08.18 10:25)
Ну здесь про условный переход, так что всегда короткий и относительный.
-
> [13] Inovet © (01.08.18 21:09)
> короткий и относительный
относительный
-
Удалено модератором
-
Inovet © (01.08.18 21:09) [13]
Дружище, в коде на Delphi, который показывает отладчик, команды перехода могут быть только двух и пятибайтные. Других там быть не может по определению, компилятор не умеет их генерировать. Так вот, и те и другие - относительные, в них содержится смещение относительно текущего адреса команды + ее длина.
-
Удалено модератором