Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.compilers > #3193

Implementing built-in functions with LLVM, help needed

From Christopher F Clark <christopher.f.clark@compiler-resources.com>
Newsgroups comp.compilers
Subject Implementing built-in functions with LLVM, help needed
Date 2022-10-07 08:56 +0300
Organization Compilers Central
Message-ID <22-10-022@comp.compilers> (permalink)
References <22-10-019@comp.compilers>

Show all headers | View raw


I'm surprised no one has chimed in yet, so I will.

> How should I implement functions like writeln, read, etc?

I presume you have a design for "user defined" functions and
procedures. If not, you need that first. That is roughly how you pass
in parameters and receive return values. Usually there is a convention
(often defined by the OS or these days the C compiler) that one
follows to do that.

But once you have that, you can call functions. And, if it is a
convention suitable for C, it specifies how you handle variadic
functions, functions that take a variable number of arguments like
writeln. Now, you may need some Pascal specific wrinkles because the
Pascal language supports things like variables from the parent scope
(a subset of the closure concept) and for writeln knowing the type of
the variable passed so that you can format it properly
("descriptors").

Still, the ability to call functions is the key thing you need to do.
Once, you have that, you implement the "builtin" functions as
functions.  If your Pascal code is complete enough you can do it in
Pascal, but quite often you do it in another (often lower level
language like C).  You don't actually generate the code directly from
LLVM, other than doing a function call.  Of perhaps a set of function
calls, e.g. writeln might be call the "to_string" function for each
parameter and then passing all those parameters to a function that
writes a series of strings.  But, both of those are simply functions
that you call, not generally inline code sequences.

--
******************************************************************************
Chris Clark                  email: christopher.f.clark@compiler-resources.com
Compiler Resources, Inc.  Web Site: http://world.std.com/~compres
23 Bailey Rd                 voice: (508) 435-5016
Berlin, MA  01503 USA      twitter: @intel_chris
------------------------------------------------------------------------------

Back to comp.compilers | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Implementing built-in functions with LLVM, help needed Ivan Espinosa <ivanmtze96@gmail.com> - 2022-10-03 15:13 -0700
  Re: Implementing built-in functions with LLVM, help needed antispam@math.uni.wroc.pl - 2022-10-06 15:15 +0000
  Implementing built-in functions with LLVM, help needed Christopher F Clark <christopher.f.clark@compiler-resources.com> - 2022-10-07 08:56 +0300
    Re: Implementing built-in functions with LLVM, help needed Hans-Peter Diettrich <DrDiettrich1@netscape.net> - 2022-10-07 20:59 +0200
    Re: Implementing built-in functions with LLVM, help needed antispam@math.uni.wroc.pl - 2022-10-13 14:08 +0000

csiph-web