Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #135550
| From | peter <peter.noreply@tin.it> |
|---|---|
| Newsgroups | comp.lang.forth |
| Subject | Re: Forth on ARM64 |
| Date | 2026-09-04 07:33 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <20260904073311.00003526@tin.it> (permalink) |
| References | <117cmk0$1st8p$1@paganini.bofh.team> |
On Thu, 3 Sep 2026 20:51:14 -0000 (UTC)
antispam@fricas.org (Waldek Hebisch) wrote:
> Under Linux on ARM64 trying to set machine stack pointer to
> value which is not divisible by 16 leads to error. AFAICS this
> means that in default setting machine stack pointer is not
> usable as as Forth user stack pointer or return stack pointer.
> I wonder what Forth implementation do? Do they use different
> registers as user and return stack pointer? Maybe they use
> machine stack pointer for control and locals? Or maybe some
> system magic removes the restriction?
>
Here is the register assignments for the token VM I wrote for
ARM64 for lxf 64
/*
VM8 assembler based aarch64 vm for lxf64 Forth
Copyright 2020 Peter Fälth
Register usage
X19 ip vm instruction pointer
x20 TOP top of stack cached in x20
x21 sp vm stack pointer
x22 rp vm return stack pointer
x23 fp vm floating point stack pointer
x24 lp vm local stack pointer
x25 idx loop index of innermost loop
x26 limit loop limit of innermost loop
x27 address of jump table
d8 FTOP top of float stack cached in d8
sequence to nest to next opcode is RELOAD
ldrb w0, [x19], 1 load opcode byte at ip, advance ip by 1
ldr x2, [x27, x0, lsl 3] load address of machine code from jmptable+opcode*8
br x2 jump to next machine code
*/
There are just 2 calls in the hole VM, in these cases 2 registers are
pushed to maintain 16 byte alignment.
You can avoid the 16 byte alignment by using a register other then sp
for the processor stack. My tests showed this code to be about 30% slower
in execution speed.
BR
Peter
Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Forth on ARM64 antispam@fricas.org (Waldek Hebisch) - 2026-09-03 20:51 +0000
Re: Forth on ARM64 peter <peter.noreply@tin.it> - 2026-09-04 07:33 +0200
Re: Forth on ARM64 albert@spenarnc.xs4all.nl - 2026-09-04 10:21 +0200
Re: Forth on ARM64 antispam@fricas.org (Waldek Hebisch) - 2026-09-04 21:19 +0000
Re: Forth on ARM64 peter <peter.noreply@tin.it> - 2026-09-04 23:51 +0200
Re: Forth on ARM64 albert@spenarnc.xs4all.nl - 2026-09-05 13:11 +0200
Re: Forth on ARM64 Paul Rubin <no.email@nospam.invalid> - 2026-09-05 15:49 -0700
Re: Forth on ARM64 antispam@fricas.org (Waldek Hebisch) - 2026-09-05 23:39 +0000
Re: Forth on ARM64 antispam@fricas.org (Waldek Hebisch) - 2026-09-04 22:25 +0000
Re: Forth on ARM64 peter <peter.noreply@tin.it> - 2026-09-05 09:54 +0200
csiph-web