6.2.2 Mangled names for code blocks

The rules for mangled names for routines are as follows:

The following constructs

unit testman;  
 
interface  
type  
  myobject = object  
   constructor init;  
   procedure mymethod;  
  end;  
 
implementation  
 
constructor myobject.init;  
begin  
end;  
 
procedure myobject.mymethod;  
begin  
end;  
 
function myfunc: pointer;  
begin  
end;  
 
procedure myprocedure(var x: integer; y: longint; z : pchar);  
begin  
end;  
 
end.

will result in the following assembler file for the Intel 80x86 target:

.file "testman.pas"  
 
.text  
.balign 16  
.globl _TESTMAN$$_$$_MYOBJECT_$$_INIT  
_TESTMAN$$_$$_MYOBJECT_$$_INIT:  
pushl %ebp  
movl %esp,%ebp  
subl $4,%esp  
movl $0,%edi  
call FPC_HELP_CONSTRUCTOR  
jz .L5  
jmp .L7  
.L5:  
movl 12(%ebp),%esi  
movl $0,%edi  
call FPC_HELP_FAIL  
.L7:  
movl %esi,%eax  
testl %esi,%esi  
leave  
ret $8  
.balign 16  
.globl _TESTMAN$$_$$_MYOBJECT_$$_MYMETHOD  
_TESTMAN$$_$$_MYOBJECT_$$_MYMETHOD:  
pushl %ebp  
movl %esp,%ebp  
leave  
ret $4  
.balign 16  
_TESTMAN$$_MYFUNC:  
pushl %ebp  
movl %esp,%ebp  
subl $4,%esp  
movl -4(%ebp),%eax  
leave  
ret  
.balign 16  
_TESTMAN$$_MYPROCEDURE$INTEGER$LONGINT$PCHAR:  
pushl %ebp  
movl %esp,%ebp  
leave  
ret $12