Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

BASM в DELPHI, проблема с Offset`ами [D7]


Страницы:   1 2

vastani ©   (2010-04-12 12:56:00) 

приведу упрощенный вариант BASM проблемы, надеюсь решение всеже есть:

procedure proba();
asm
@a:
  nop
  nop
@b:
  mov  eax, (offset @b - offset @a)
  ret
  DW word( offset @b - offset @a)
end

Я привёл два места в коде (они нужны именно такими), которые ни в какую НЕ ХОТЯТ компилится как КОНСТАНТЫ, т.е. получается вроде, что BASM не в состоянии вычислить дельту между оффсетами и (offset @b - offset @a) для него неподдерживается??? Уж чего только не пробовал и скобочки дополнительные и другие извраты включая математические умножить/разделить на константу, все чушь и бред отчаяния, очень надо и вся задумка в проекте сводится на нет только от этой проблемы, ну не верится что нет выхода в ассемблерном блоке, может я не знаю просто. Почему: (offset @b - 100) - запросто, а дельта оффсетов - нет? Что не так?


Дмитрий Белькевич   (2010-04-13 01:05:00) [21]


> хотелось бы чтобы "все было родное" и отладчиком пошагово
> лазить,


Зачем? Если


> рабочих и проверенных


?


Sha   (2010-04-13 00:05:00) [22]

Еще на BASMе неудобно программировать корчеватели.
Совсем плохой язык.


vastani   (2010-04-12 21:54:00) [23]


> Сотвори из "статического, готового и проверенного" obj-модуль
> и прилинкуй к дельфийскому проекту

делал так, но... это было первым вариантом, если быть кратким не подходитb гемора своегополно тоже...

> Я бы сначала написал бы как у тебя, и потом бы искал другое
> решение

я и пишу какое решение мне нужно, сузив проблему до ЕДИНСТВЕННОЙ - получение в совокупности дельт оффсетов, как фиксированных констант в таблице значений DW ... и именно внутри ASM.......END;
Последний мой пост - уже и конкретнее дальше некуда. Нужно обеспечить компиляцию именно ОТОГОучастка. Если НЕ решить этой ерунды (казалось бы), то получается мой проект и задумка лишены смысла, либо перепахивать, как камикадзе весь ASM исходник так, чтобы он "нравился" этому кастрату - BASM.
Не хочу DLL или OBJ решений, хотелось бы чтобы "все было родное" и отладчиком пошагово лазить, как у себя дома в IDE и редактировать и компилить соответственно...


Anatoly Podgoretsky   (2010-04-12 18:59:00) [24]


> У меня на DELPHI 7 устойчивый "Inline assembler syntax error"
> в данном варианте, как и в массе предыдущих интерпретаций
> выражения в скобках. Хоть так,

Я бы сначала написал бы как у тебя, и потом бы искал другое решение, как ты понимаешь, мне даже Дельфи запускать неохота.


Сергей М.   (2010-04-12 18:04:00) [25]


> Все статическое, готовое и проверенное рассыпается


Сотвори из "статического, готового и проверенного" obj-модуль и прилинкуй к дельфийскому проекту.


vastani   (2010-04-12 17:54:00) [26]

У меня на DELPHI 7 устойчивый "Inline assembler syntax error" в данном варианте, как и в массе предыдущих интерпретаций выражения в скобках. Хоть так,
asm
@a:
 nop
 nop
@b:
 DW ( @b - @a )
end;

хоть еще че нить, не хочет гад константу посчитать....
Быть может BASM человечески доработан на каком нибудь Delphi 2010  (CodeGear 2010)???


Anatoly Podgoretsky   (2010-04-12 17:09:00) [27]

А так можно
 DW word(@b - @a)


vastani   (2010-04-12 16:03:00) [28]

с регистрами можно попордоваться, понятно, НО таблица значений DW ...,
которые хочется "втянуть" из ассемблерных исходников (рабочих и проверенных) в процедуру делфи и как BASM дает большое разочарование... неужели никак?
Вынести DW ... в CONST скажем и оформить как ARRAY() можно, но тогда OFFSET`ы обрамлённые ASM.....END; как констаты в этот(и) массив(ы) не попадают никак... Неделю бьюсь, гуглю, рыщу, никакой зацепки не вижу.
Все статическое, готовое и проверенное рассыпается, как мечта, неужели ручками все только динамически делать, т.е. в VAR создавать, и "наливать" их вычисляя дельты через некую придуманную дополнительную инициализационную подфункцию по некому параметру.... Жжжжуть и жесть!  Легче забыть, пожалуй про мечту. Нарвался я на вилы похоже.


Rouse_   (2010-04-12 15:39:00) [29]

 lea eax, @b
 sub eax, offset @a


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо