[llvm-dev] LLVM Backend for a platform with no (normal) stack

Anton Korobeynikov via llvm-dev
Sat, 15 Dec 2018 14:32:46 -0000

Well, since you're having memory, then things are more or less doable
– all you need is to create and maintain stack by yourself. This could
be done on per-function basis or whole program (the technique is
called "compiled stack" or "software stack").
On Fri, Dec 14, 2018 at 11:09 PM JD Jones via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
>
> Thanks, no malloc or free equivalents either (no heap).
>
>
>
> So, there are no others (to your knowledge) who have built an LLVM backend
for a platform with no “normal” stack?  I found a presentation about some FPGA
work (using LLVM) but it doesn’t seem to apply to my platform. Perhaps someone
else on the mailing list will have come across this rarity?
>
>
>
> Thank you again for your time and responses. If I have inadvertently been
rude, please forgive someone new to LLVM? And if your forgiveness stretches that
far, perhaps you could clue me on just how I was rude so that I can avoid it in
the future?
>
>
>
> More thanks,
>
> JD Jones
>
>
>
> From: Bruce Hoult [mailto:brucehoult at sifive.com]
> Sent: Friday, December 14, 2018 1:29 PM
> To: jjones at prc-hsv.com
> Cc: LLVM Developers Mailing List <llvm-dev at lists.llvm.org>
> Subject: Re: [llvm-dev] LLVM Backend for a platform with no (normal) stack
>
>
>
> Having your function prologue call malloc() and epilogue call free() (or
similar functions) instead of bumping a stack pointer is not a problem. That
stuff is generated explicitly by ISA-specific code anyway.
>
>
>
> On Fri, Dec 14, 2018 at 9:05 AM JD Jones <jjones at prc-hsv.com>
wrote:
>
> Thanks for your response.  Please see below.
>
>
>
> From: Bruce Hoult [mailto:brucehoult at sifive.com]
> Sent: Thursday, December 13, 2018 5:58 PM
> To: jjones at prc-hsv.com
> Cc: LLVM Developers Mailing List <llvm-dev at lists.llvm.org>
> Subject: Re: [llvm-dev] LLVM Backend for a platform with no (normal) stack
>
>
>
> Do you have a register that you can store a memory address
>
> >> yes
>
>
>
> in and an addressing mode that allows you to add (or subtract) a constant
to that register
>
> >> Sometimes
>
>
>
> and use the address calculated to load//store from memory? Do you have
enough registers that you can keep one of them permanently pointed to a
particular memory region?
>
> >> No
>
>
>
> The platform intentionally does not allow use of some large chunk of memory
for shared use by function calls.  I can allocate memory (so long as I know the
necessary size before-hand). I can work around this issue, but if someone has
already addressed it, I’d like to learn from their experiences before rolling my
own.
>
>
>
> If yes, then you have a stack to exactly the same extent as RISC-V or MIPS
do.
>
>
>
> On Thu, Dec 13, 2018 at 12:53 PM JD Jones via llvm-dev <llvm-dev at
lists.llvm.org> wrote:
>
> Dear Sir or Ma’am;
>
>
>
> I have found a wealth of help and information on writing an LLVM backend.
And, my platform has no stack.
>
>
>
> Can you point me to any information that would specifically address
creating a backend for this kind of platform?
>
>
>
> In previous wanderings, I thought I ran across a phrase “platforms with no
stack such as FPGAs”, but I can’t find that mention, now.
>
>
>
> More thanks than I can type,
>
> JD Jones
>
> Software Engineer
>
>
> This message is intended for the addressee only and may contain Paragon
Research Corporation (PRC) confidential or privileged information.  Use or
distribution of such confidential information is strictly prohibited without the
prior written permission of PRC.  If you have received this message in error,
please contact the sender immediately and delete the message and attachments
from your computer._______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
> This message is intended for the addressee only and may contain Paragon
Research Corporation (PRC) confidential or privileged information.  Use or
distribution of such confidential information is strictly prohibited without the
prior written permission of PRC.  If you have received this message in error,
please contact the sender immediately and delete the message and attachments
from your computer.
>
>
> This message is intended for the addressee only and may contain Paragon
Research Corporation (PRC) confidential or privileged information.  Use or
distribution of such confidential information is strictly prohibited without the
prior written permission of PRC.  If you have received this message in error,
please contact the sender immediately and delete the message and attachments
from your computer._______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



--
With best regards, Anton Korobeynikov
Department of Statistical Modelling, Saint Petersburg State University