![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Assembler в Delhi [D7, WinXP]
UserUserov © (2004-10-01 22:32:00)Я asm знаю не так хорошо, и у меня вопрос с исполь-
зованием его в Дельфях, скажем мне
нужно перейти на метку в цикле, но как ее объявить???
Anatoly Podgoretsky (2004-10-02 10:46:00) [1]DHDD (02.10.04 08:42) [13]
Все чудесатее и чудесатее
Defunct (2004-10-02 09:05:00) [2]> Адрес метки сохраняется в коде.
в каком месте?
> Это не правила Дельфы, a asm 8086.
можно немного подробнее начиная с этого места.
DHDD (2004-10-02 08:42:00) [3]Адрес метки сохраняется в коде. Явно/относительно - глобально/локально. Это не правила Дельфы, a asm 8086. До свидания.
Defunct (2004-10-02 08:25:00) [4]> Сохраняется компилятором в exe
и там ее тоже нет, потому как метка - адрес.
метка есть только в исходнике.
DHDD (2004-10-02 08:06:00) [5]Сохраняется компиляторомв exe, извиняюсь!
Defunct (2004-10-02 06:36:00) [6]DHDD (02.10.04 06:27) [9]
> @ - глобальная метка (под неё выделяется память глобальная)
> @@ - локальная метка (память выделяется в стёке)
Ну ты закрутил, еще и "стёк" приплел.
Хорошое утро плохого дня?
Под метки память не выделяется впринципе никогда. Метки это есть адреса кода/данных в памяти. Как и зачем "выделять память" под "адреса памяти"?
DHDD (2004-10-02 06:27:00) [7]Метка в asm'е должна начинаться с @ (собака)
@ - глобальная метка (под неё выделяется память глобальная)
@@ - локальная метка (память выделяется в стёке)
Германн (2004-10-02 04:55:00) [8]А как же тогда сейчас мучаются те, которым нужно писАть на ассэмблере?
Имхо, без локальных меток - жить ну очень трудно! Если конечно пишешь несколько процедур в одном блоке(файле).
Defunct (2004-10-02 04:18:00) [9][6]
пройдет
ps: все это пережитки прошлого, в общем сейчас @@ никакой смысловой нагрузки не несет, просто для красоты.
Германн (2004-10-02 04:07:00) [10]Или у меня склероз, или как?
Имхо двойная собака в ассэмблере, который для РС, означала "локальную" метку!
2 Defunct © (02.10.04 02:33) [5]
А такой вариант "forward definition" пройдет? :
jmp @@Loop
@1:
...
@@Loop
Defunct (2004-10-02 02:33:00) [11]GanibalLector © (02.10.04 02:15) [4]
Ну вообще-то старые компиляторы воспримимали @@ как метку объявленную наперед (forward definition)
@Loop:
Jmp @Loop
работало бы, а
Jmp @Loop
@Loop:
выдало бы ошибку, что такой метки @Loop нет. @@ - говорило компилятору, что метка может располагаться ниже.
jmp @@Loop
@@Loop:
работает везде, даже в BP. Поэтому лучше уж все метки рисовать с двумя собачками.
GanibalLector (2004-10-02 02:15:00) [12]Defunct
А,ну тогда понятно.Так бы сразу и сказал бы DrPass © (01.10.04 22:54) [1]
Defunct (2004-10-02 02:12:00) [13]GanibalLector © (02.10.04 01:59) [2]
для красоты
GanibalLector (2004-10-02 01:59:00) [14]2 DrPass
А на кой двойная собака???С одной все прекрасно работает!
DrPass (2004-10-01 22:54:00) [15]
@@MyLabel:
JNE @@MyLabel