[fpc-pascal] issue when enabling -O2

Matias Vara matiasevara at gmail.com
Wed Jan 10 17:51:13 CET 2018


Thank you very much Karol, I completly missed this point during the
development of my kernel (Or maybe I had in mind sometime ago but I forgot
it)
It was only when I decided to play with -02 that all these issues arrised.

Matias

2018-01-10 17:34 GMT+01:00 Karoly Balogh (Charlie/SGR) <
charlie at scenergy.dfmk.hu>:

> Hi,
>
> On Wed, 10 Jan 2018, Matias Vara wrote:
>
> > Hi Karol and thanks you very much! I got confused with the function
> > names, I feel very sorry.As I said in my previous email, I fixed by
> > rewriting the assembler function. However, I don't why it worked.
>
> By accident. Simply the register/stack/memory layout being different upon
> entry, and it worked by pure luck.
>
> > So I understand you correctly, if I use assembler in my procedures there
> > could be a risk that I trash a variable that the compiler is using.
>
> Yes. All operating systems and CPU architectures define a so called ABI or
> calling convention, which functions must respect. This details which
> registers are the parameters to be passed on, and which registers are free
> to destroy in a function and which ones *MUST* be saved/preserved (usually
> on the stack). There's no way around this. The compiler will expect that
> your assembly subfunctions play by the rules.
>
> See here, for example, for x86:
> https://en.wikipedia.org/wiki/X86_calling_conventions
>
> > Is  the compiler warning me about this?
>
> No. Assembly is quite a minefield in this regard. If you use assembler,
> the compiler assumes you know what you're doing, and doesn't analyze the
> assembler function. You have to respect the ABI of your CPU *AND* target
> platform by hand, and save the nonvolatile registers.
>
> (This is BTW, not Free Pascal specific. Delphi does the same, or more or
> less any other language which supports inline assembly.)
>
> Charlie
>
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20180110/864c3b25/attachment.html>


More information about the fpc-pascal mailing list