----- Forwarded Message -----
From: Hugh Aguilar <hughaguila...@yahoo.com>
To: Stephen Bloch <bl...@adelphi.edu> 
Sent: Wednesday, September 26, 2012 8:07 PM
Subject: Re: [racket] assembly language


You are right that a threaded Forth doesn't need to do any assembly --- it just 
"compiles" pointers to functions (code field addresses) in a thread. This can 
and has been done with traditional assemblers such as HLA. I'm not interested 
in that though.
 
I want to generate machine-code functions. This involves assembling at run-time 
(for the forth system, which is compile-time for the Forth application program).
 
I don't really understand JIT. I suppose the idea is to save memory by 
compiling the program as threaded code (which is much smaller than 
machine-code), but to convert this into machine-code "just in time" for it to 
run. I suppose this involves pasting together the code from all of those 
sub-functions in the threaded stream to create a sequence of machine-code. It 
seems like this conversion would take so much time that it would outweigh any 
speed advantage of running machine-code rather than threaded code. It must work 
somehow though, as it seems to be done quite a lot (the JVM for example).
 
I'm not planning on JIT (especially as I don't understand it). I just want the 
compiler to assemble actual text source-code rather than paste together code 
snippets, which I am finding to be a hassle. This will be done at compile-time 
for the Forth application --- at run-time the Forth application just runs.


 


________________________________
From: Stephen Bloch <bl...@adelphi.edu>
To: Hugh Aguilar <hughaguila...@yahoo.com> 
Cc: Tony Garnock-Jones <to...@ccs.neu.edu>; "users@racket-lang.org" 
<users@racket-lang.org> 
Sent: Tuesday, September 25, 2012 5:12 PM
Subject: Re: [racket] assembly language


On Sep 25, 2012, at 7:38 PM, Hugh Aguilar <hughaguila...@yahoo.com> wrote:


I am writing a Forth system. I want it to be interactive in the usual Forth 
way. This means assembling a function at run-time and immediately being able to 
run the assembled function.
> 
>... I'm much better off if I can just assemble the functions at run-time for 
>the Forth system (which is compile-time for the user's Forth program).
The traditional way to implement a Forth compiler, IIUC,  isn't to generate 
executable machine code at all, but rather to generate a sequence of 
word-references that are interpreted as procedure calls by the Forth 
interpreter (which is in native executable code, but written in advance). 

Or are you talking about some kind of JIT compiler?

Stephen Bloch 
sbl...@adelphi.edu

who last implemented a Forth system in 1983; I presume things have changed 
since then!
____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to