· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› tlink: out of memory

<< . 1 . 2 . 3 . >>

Посл.отвђт Сообщенiе


Дата: Июл 21, 2003 20:00:04

blackgun
И как такую же вещь устроить на TASM? jz $+(@@1-$),например, компилируется как jz 0ABCDh
Странно, зато MASM32 автоматом оптимизирует эти переходы в короткий вариант. Может для TASM'а есть какой-то ключ или директива для оптимизации переходов?


Дата: Июл 21, 2003 21:34:52

KiNDeR
У вирусов нет ни ручек, ни интуиции и они как-то с этой проблемой справляются :))...
Quantum
Все, перехожу на masm, раз такое дело...


Дата: Июл 21, 2003 21:39:07 · Поправил: KiNDeR

blackgun
У вирусов нет ни ручек, ни интуиции и они как-то с этой проблемой справляются :))...

Ага, и пишут они себя сами...


Дата: Июл 21, 2003 23:18:28

Интересно, эти сишные функции cscanf и printf исполлльзуют функции 0Ah,0Ch,и 09h прерывания 21h? Может кто знает?

Да, конечно. Когда-то давно проверял.

Может для TASM'а есть какой-то ключ или директива для оптимизации переходов?

Насколько я помню, надо заставить его проходить по файлу два раза. Почему так - написано у Абеля.

blackgun

Речь идет о position independent jumps/calls?


Дата: Июл 22, 2003 02:18:35

volodya
И как его заставить пройти дважды?
O position independent jumps/calls я ваще никогда не слышал...

Кстати, что а означают директивы locals и jumps? Часто их встречал в исходниках, но по коментариям в них написаным никак не мог догнать что они делают. Неужели если их не написать, то нельзя будет пользоваться безусловными переходами и локальными метками?(я всегда пользуюсь и тем и другим, но никогда не пишу "лишних" директив)


Дата: Июл 22, 2003 02:41:44

blackgun
По моему, директива mX, где X число, заставляет, проходить несколько раз.(надо у Юрова посмотреть)


Дата: Июл 22, 2003 03:33:06

/m# - Allow # multiple passes to resolve forward references

Во время первого прохода ассемблер не может вычислить длину прыжка вперед. Поэтому требуются прогоны, если не хочешь, чтобы все прыжки были длинными.

По PIC была статья у RedPlait на reversing.net, но он кончился. Пример PIC был уже продемонстрирован, когда было что-то вроде
call $+5;
pop eax;

Пример такого кода можно найти сразу в начале Aspack. Более подробно - гугл.


Дата: Июл 22, 2003 04:30:48

blackgun
сишные функции cscanf и printf исполлльзуют функции 0Ah,0Ch,и 09h прерывания 21h?
Зависит от компилятора и os.
Нпример, bcc v3.1 cprintf работает сразу через int10h, в linux'е нет int21h в понимании dos'а.


Дата: Июл 22, 2003 06:25:04

P2M

Ну по поводу cscanf и printf это как бы очевидно. На то и С. Под DOS это будет 21h, под Windows - соответствующая API, под Linux - что-то свое.


Дата: Июл 22, 2003 07:26:26 · Поправил: P2M

volodya
Под DOS это будет 21h
Повторю в bcc v3.1 cprintf работет мимо int21h.


Дата: Июл 22, 2003 13:05:15

Сделал я там 2 прохода, а условные прыжки так и остались трехбайтовыми (C3 1234). А должны быть двухбайтовыми (C3 0F), как я видел в Билдере...


Дата: Июл 22, 2003 15:52:08

Все. К е№№№ям этот ТАСМ! Только вот теперь МАСМ матерится на все мои повторяющиеся локальные метки. И как теперь быть? Или в МАСМе вообще нет такого понятия, как "локальная метка"?


Дата: Июл 22, 2003 16:20:36

Может быть Фасм и не самый подходящий компилятор для вин32, но с последними версиями програмить под виндовз становится всё проще....


Дата: Июл 22, 2003 19:11:40 · Поправил: Quantum

blackgun
Или в МАСМе вообще нет такого понятия, как "локальная метка"?
Метки внутри процедур (PROC - ENDP) всегда локальны. Или вы имеете в виду @X?


Дата: Июл 22, 2003 20:55:35

Quantum
Да, я именно про @@...
Кстати, в ТАСМе метки между PROC ENDP не локальные... Так что МАСМ рулит!

<< . 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.071