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? :shock:

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 :o А конструкция нижеприведенная покатит ?:
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
Можно использовать оба варианта.