<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Feb 19, 2017 at 6:42 PM, Bishop <span dir="ltr"><<a href="mailto:cat_shtaer@rambler.ru" target="_blank">cat_shtaer@rambler.ru</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
   
      
   
<div>
I need to get pointer to class VMT in assembler block. In pascal code this
can be done very simple, like Ptr := Pointer(SomeClass). But when i try in
assembler do like "MOV RAX, SomeClass" this make assembler syntax error. If
i try "LEA RAX, [SomeClass]" this compiled like "LEA RAX, [0]".<br>
<br>
So, how get pointer to specefic class VMT in assembler block?</div></blockquote><div><br></div><div>The assembler window (ctrl+alt+d) may help you to check what asm block fpc generated for its pascal code, for example, in my target (64 bits) the following asm block code was generated for a `ptr := pvmt(classtype)`:</div><div><br></div><div><div><font size="1" face="monospace, monospace">...</font></div><div><font size="1" face="monospace, monospace">unit1.pas:36                              ptr := pvmt(classtype);</font></div><div><font size="1" face="monospace, monospace">000000000045E7A1 488b45f0                 mov    -0x10(%rbp),%rax</font></div><div><font size="1" face="monospace, monospace">000000000045E7A5 488b00                   mov    (%rax),%rax</font></div><div><font size="1" face="monospace, monospace">000000000045E7A8 488945e0                 mov    %rax,-0x20(%rbp)</font></div><div><font size="1" face="monospace, monospace">000000000045E7AC 488945e8                 mov    %rax,-0x18(%rbp)</font></div></div><div><br></div><div>and iirc the default asm syntax for my system (linux) is at&t.</div><div><br></div><div>hth</div><div><br></div><div>--<br></div></div><div class="m_5302119367647585550gmail_signature"><div dir="ltr"><div>Silvio Clécio</div></div></div>
</div></div>