Page 1 of 1
ASM 32/64 markers
Posted: Thu May 12, 2011 9:30 am
by Master
Есть ли нормальные маркеры для заинлайненого в fpc ассемблера?
PS: И когда будет введена поддержка мапов от fpc?
Re: ASM 32/64 markers
Posted: Thu May 12, 2011 12:12 pm
by Admin
А чем не устраивает использование маркеров из SDK?
Re: ASM 32/64 markers
Posted: Thu May 12, 2011 2:56 pm
by Master
invoke VMProtectBegin,SADD("Test marker") в FPC? Попробуйте слинковать свои coff/omf с FPC. Получите незабываемые ощущения

Молчу про синтаксис не TASM'a.
Да, хоть в дельфи в процедурах типа "assembler" как вставлять сии маркеры?
Re: ASM 32/64 markers
Posted: Thu May 12, 2011 3:13 pm
by Admin
А зачем вам нужно линковать coff/omf с FPC? Я не уверен что он их вообще поймет, т.к. для паскаля они не нужны - это чисто сишная кухня. Для паскаля достаточно добавить в uses VMProtectSDK.pas:
Code: Select all
uses VMProtectSDK;
asm
push 0
call VMProtectBegin;
...
call VMProtectEnd;
end;
Re: ASM 32/64 markers
Posted: Thu May 12, 2011 3:18 pm
by Admin
P.S. Пример с именами маркеров:
Code: Select all
asm
push offset(@marker_name)
call VMProtectBegin
...
call VMProtectEnd
jmp @end
@marker_name:
db 'Test marker',0
@end:
end;
Re: ASM 32/64 markers
Posted: Thu May 12, 2011 3:47 pm
by Master
asm
push 0
call VMProtectBegin;
end;
Похоже на правду.
asm
push offset(@marker_name)
call VMProtectBegin
...
call VMProtectEnd
jmp @end
@marker_name:
db 'Test marker',0
@end:
end;
Попробуйте линкануть с FPC 64, чтобы заработало

Re: ASM 32/64 markers
Posted: Thu May 12, 2011 3:51 pm
by Admin
FPC поддерживает ассемблер для х64?

Re: ASM 32/64 markers
Posted: Thu May 12, 2011 4:33 pm
by Admin
Хм. Действительно поддерживает:
Code: Select all
asm
mov rcx, offset @marker_name
call VMProtectBegin
...
call VMProtectEnd
jmp @end
@marker_name:
db 'Test marker',0
@end:
end;
Re: ASM 32/64 markers
Posted: Fri May 13, 2011 2:47 am
by Admin
P.S. Для x64 Calling Conventions отличаются от х32, т.е. для всех типов вызовов (включая stdcall) 4 первых параметра передаются через регистры RCX, RDX, R8, R9, а остальные передаются через стек.
ASM 32/64 markers
Posted: Sat May 14, 2011 5:19 am
by Master
Admin wrote:P.S. Для x64 Calling Conventions отличаются от х32
Как бы я до этого писал на асме64

А конструкция нижеприведенная покатит ?:
asm
xor rcx, rcx
call VMProtectBegin
...
call VMProtectEnd
end;
или лучше эта?
asm
jmp @F
db 'VMProtect begin',0
@F:
jmp @F2
db 'VMProtect end',0
@F2:
end;
Re: ASM 32/64 markers
Posted: Sat May 14, 2011 7:57 am
by Admin
Можно использовать оба варианта.