00:00:00 --- log: started forth/21.01.30 00:09:11 --- quit: gravicappa (Ping timeout: 260 seconds) 00:09:28 --- join: ornxka joined #forth 01:31:46 --- quit: zolk3ri (Ping timeout: 268 seconds) 01:59:24 --- join: gravicappa joined #forth 02:08:30 --- quit: gravicappa (Ping timeout: 265 seconds) 04:23:48 --- quit: sts-q (Remote host closed the connection) 04:24:37 --- join: zolk3ri joined #forth 04:25:12 --- join: sts-q joined #forth 04:27:44 --- join: gravicappa joined #forth 07:57:17 --- quit: sts-q (Quit: ) 07:57:39 --- join: sts-q joined #forth 07:59:06 --- join: Zarutian_HTC1 joined #forth 07:59:43 --- quit: Zarutian_HTC (Read error: Connection reset by peer) 08:01:10 --- quit: sts-q (Client Quit) 08:01:35 --- join: sts-q joined #forth 08:11:59 --- quit: ornxka (Quit: No Ping reply in 180 seconds.) 08:13:09 --- join: ornxka joined #forth 08:42:09 --- quit: cheater (Ping timeout: 265 seconds) 08:57:39 --- join: cheater joined #forth 10:01:37 --- join: hosewiejacke2 joined #forth 10:08:07 --- quit: hosewiejacke2 (Quit: Leaving) 10:22:07 --- quit: gravicappa (Ping timeout: 240 seconds) 10:22:47 --- join: gravicappa joined #forth 10:34:15 --- quit: Zarutian_HTC1 (Ping timeout: 272 seconds) 11:03:12 --- quit: zolk3ri (Remote host closed the connection) 11:03:25 --- join: zolk3ri joined #forth 11:48:53 --- quit: gravicappa (Ping timeout: 272 seconds) 13:54:48 --- join: Zarutian_HTC joined #forth 14:28:58 --- quit: inode (Quit: ) 14:45:12 --- quit: Zarutian_HTC (Remote host closed the connection) 15:41:53 --- quit: lispmacs[work] (Quit: need to reboot) 15:48:14 --- join: lispmacs[work] joined #forth 17:03:16 --- join: dave0 joined #forth 17:53:12 --- quit: ovf (Ping timeout: 264 seconds) 17:56:31 --- join: ovf joined #forth 18:27:01 --- join: boru` joined #forth 18:27:04 --- quit: boru (Disconnected by services) 18:27:06 --- nick: boru` -> boru 19:33:44 --- quit: dave0 (Quit: dave's not here) 19:38:45 --- quit: proteusguy (Ping timeout: 264 seconds) 19:51:45 --- join: proteusguy joined #forth 19:51:45 --- mode: ChanServ set +v proteusguy 20:20:45 --- quit: sts-q (Ping timeout: 264 seconds) 20:28:58 --- join: sts-q joined #forth 20:38:26 --- join: Zarutian_HTC joined #forth 20:38:26 --- quit: Zarutian_HTC (Client Quit) 21:08:34 --- join: dave0 joined #forth 22:05:46 --- join: gravicappa joined #forth 22:20:06 Anyone seen a forth implemented in C that managed to get around the C calling convention and implement something more akin to next with JMP? 22:22:21 unless you count implementing a VM, I don't think you can in standard C 22:22:44 You would have to create another calling convention or subvert C's. 22:22:51 some inline asm perhaps. 22:23:29 perhaps; you might need "naked functions" too? 22:24:37 not sure how much of a win that is over just using assembly at that point though; I suppose you get somewhat more portability 22:25:49 but I don't know if you can convince the register allocator to not spill e.g. the forth stack ptr 22:26:14 Didn't know what naked functions were before now... interesting idea. 22:28:06 yeah, though note gcc documents: While using extended asm or a mixture of basic asm and C code may appear to work, they cannot be depended upon to work reliably and are not supported. 22:28:43 I'm using clang and it appears to only allow inline asm inside a naked function... unfortunately. 22:29:04 oh, yeah, clang in particular is gonna fight you hard about this sorta stuff 22:29:32 iirc it even tries to translate computed gotos to a normal if-elseif-elseif-else chain 22:43:21 goodness. :-) too bad you can't just goto a function rather than strictly a local label. 22:44:52 yeah, the "C is fast" perception is mainly based on the super-aggressive optimizations that directly combat the "C maps closely to your hardware, and will let you do anything your hardware can do" 22:45:32 on the other hand, do you know if tail-call elimination would work for your purposes? 22:46:14 remexre, it does for a lot of it and I am doing that. but I was trying to make it, in general, as close as possible to what I'd implement in ASM, especially for the inner interpreter. 22:47:27 fair; I'd imagine you could just #define NEXT return (++ip)(stack_ptr, rstack_ptr, ip, ...); though 22:48:24 that's been another thought. I've got to see what the assembly output of the compiler looks like and see how it goes. 22:48:52 yeah; if you're not familiar with it, godbolt.org is really nice for that 22:49:59 remexre, ah yes I have seen this. Haven't used it as I'm pretty comfortable with the -s output on my command line but does look quite handy for testing something that doesn't have many dependencies. 22:54:58 er and it doesn't compile my code. insists that there's no such thing as std::endian even when I have the correct include for clang10. strange. compiles perfectly on my own platform. 22:55:42 huh, you might need to pass -std=c++20 or something? 22:56:12 Ah likely so. 22:56:37 yep that did it. 23:49:52 --- quit: dave0 (Quit: dave's not here) 23:59:59 --- log: ended forth/21.01.30