ASM 32/64 markers

Есть ли нормальные маркеры для заинлайненого в fpc ассемблера?

PS: И когда будет введена поддержка мапов от fpc?

А чем не устраивает использование маркеров из SDK?

invoke VMProtectBegin,SADD(“Test marker”) в FPC? Попробуйте слинковать свои coff/omf с FPC. Получите незабываемые ощущения :slight_smile: Молчу про синтаксис не TASM’a.
Да, хоть в дельфи в процедурах типа “assembler” как вставлять сии маркеры?

А зачем вам нужно линковать coff/omf с FPC? Я не уверен что он их вообще поймет, т.к. для паскаля они не нужны - это чисто сишная кухня. Для паскаля достаточно добавить в uses VMProtectSDK.pas:

uses VMProtectSDK;

 asm
  push 0
  call VMProtectBegin;
  ...
  call VMProtectEnd;
 end;

P.S. Пример с именами маркеров:

 asm
  push offset(@marker_name)
  call VMProtectBegin
  ...
  call VMProtectEnd
  jmp @end
@marker_name:
  db 'Test marker',0
@end:
 end;

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, чтобы заработало :slight_smile:

FPC поддерживает ассемблер для х64? :open_mouth:

Хм. Действительно поддерживает:

  asm
   mov rcx, offset @marker_name
   call VMProtectBegin
   ...
   call VMProtectEnd
   jmp @end
@marker_name:
   db 'Test marker',0
@end:
  end;

P.S. Для x64 Calling Conventions отличаются от х32, т.е. для всех типов вызовов (включая stdcall) 4 первых параметра передаются через регистры RCX, RDX, R8, R9, а остальные передаются через стек.

Как бы я до этого писал на асме64 :astonished: А конструкция нижеприведенная покатит ?:
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;

Можно использовать оба варианта.