переданных меток?
Просто .label1-.label2, и вернуть значение.
Не понял, а что мешает просто написать label1-label2?
Потому что придётся писать это слииишком много)
var dd lbl1 - lbl2
Так тебе все равно надо будет в макрос метки передавать
эм, а наименования меток писать что не придётся что ли, а если так то разница не велика
Или у тебя метки по номерам? Типо label1, label2,... labelN?
Это будет красивее. ebp+(off DATA_START) Вместо ebp+(DATA_START-.copierCode)
Нет, обычные метки.
и чем это не устраивает?
Распиши примерный синтаксис, как ты его видишь на примере его использования
Я пишу независимый код, и мне это вычисление смещения надо как раз чтобы находить мои переменные.
Вот так: off DATA_START Внутри напрямую пропиши arglabel-.copierCode Потому что всё относительно неё адресоваться будет.
а чем подобное не устраивает default_http_connection: db 'Connection: ' .value = $ - default_http_connection db 'close ', 13, 10 ; or keep-alive .length = $ - default_http_connection
Это вообще не про то))
Типа mov ebx, off DATA_START ?
Не получится, макросы не могут возвращать значение в фасме. Поэтому я постоянно говорю, что exitm нужен)
а по моему то, по примеру выше можно и такое заюзать
start: call @f @@: pop eax sub eax, 5 mov ebx, dword[eax+(myvar1-start)] mov ebx, dword[eax+(myvar2-start)] mov ebx, dword[eax+(myvar3-start)] ret myvar1: myvar2: myvar3:
virtual at eax используй
Я не разбираюсь в макросах вообще)
а это и не макрос
virtual позволяет объявить динамическую метку относительно любого адреса
Ааа, не, не вариант. Там не всегда через eax адресация будет.
Давай так, а что ты в принципе хочешь автоматизировать?
Вычисление смещения относительно метки.
может сделаешь как у меня, через переменную и $ - base ? так красивее будет в самом коде
Дубликаты меток создавать надо, а у меня их примерно 30-40.
метка это и есть смещение
Lea eax, [metka + 5]
Относительно одной определённой метки?
Я выгрузил код в другую память. Допустим, в стек. И metka указывает на 0x401000, а не на правильный новый адрес внутри кода в стеке, и код сломался. Как пример.
Обсуждают сегодня