00:00:00 --- log: started forth/20.09.23 00:51:20 --- quit: dave0 (Read error: Connection reset by peer) 00:56:34 --- join: dave0 joined #forth 01:11:09 phew, finally understood how to compile a small typed functional language to C using closure conversion, lambda lifting, and SSA! 01:12:44 not sure if the techniques needed to target a stack machine would be much different 01:19:12 it's probably better to do register spilling to ensure that every subexpression doesn't have more than n free variables, where n is the number of registers 06:35:20 siraben, let us know what you find. I've always thought that was one of the main things that doomed stack machines to being so much slower than register machines 07:28:58 --- join: xek joined #forth 07:34:11 --- quit: dave0 (Quit: dave's not here) 08:11:33 --- quit: proteusguy (Ping timeout: 265 seconds) 08:12:01 --- quit: proteus-guy (Ping timeout: 260 seconds) 08:23:56 --- join: proteusguy joined #forth 08:23:56 --- mode: ChanServ set +v proteusguy 08:24:36 --- join: proteus-guy joined #forth 08:30:45 --- join: Zarutian_HTC joined #forth 09:23:50 MrMobius: sure 09:26:20 from what I've read, the biggest problem with stack machines is that when the stack gets large, it usually spills over into slower memory. with enough registers this doesn't happen 09:27:16 OTOH if you're register constrained, like the Z80, it may not be as much of a difference (it's still costs more cycles to load from RAM though), given that modern CPUs have dozens of registers the gap is now large, I think 09:30:27 --- quit: xek (Quit: Leaving) 09:41:56 siraben, hmm, just thinking about it, the problem wouldnt seem to be large stacks since you need to spill anyway with a register machine when it gets large 09:42:32 I mean something like this: FOO @ IF 5 THEN 09:42:47 MrMobius: https://en.wikipedia.org/wiki/Stack_machine#Performance_disadvantages_of_stack_machines , some points aren't as strong as others 09:43:05 you're only using one level of stack but you have to spill registers 09:43:13 right 09:43:37 but if you're only using X amount of stack at any moment, might as well be a register machine, no? 09:43:45 no 09:44:42 if your registers are faster than stack memory, then FOO @ IF 5 THEN will be slower than the equivalent code meant for a register machine since it doesn't have to spill anything 09:45:06 since a lot of the speed up or register machines seems to be keeping as much as you can in registers and accessing memory as little as necessary 09:45:21 Right 09:45:54 in FOO @ IF 5 THEN, there's a memory read, though 09:46:25 sure but let's assume there's also a memory read in the register machine to make it equal 09:46:31 mov [FOO], reg1; cmp 5, reg1; jeq LBL 09:46:34 something liek that 09:46:35 not knowing the size of the stack means you have to spill registers 09:46:37 s/liek/like 09:46:43 Yeah 09:47:07 be back later, got some differential equations homework to do. 09:59:46 --- quit: Zarutian_HTC (Ping timeout: 240 seconds) 10:44:57 --- join: WickedShell joined #forth 11:09:44 --- quit: gravicappa (Ping timeout: 256 seconds) 11:28:48 --- join: Zarutian_HTC joined #forth 11:32:32 --- join: gravicappa joined #forth 11:39:12 --- quit: gravicappa (Ping timeout: 256 seconds) 11:41:39 --- join: gravicappa joined #forth 12:02:46 --- quit: proteus-guy (Ping timeout: 240 seconds) 12:16:46 --- join: proteus-guy joined #forth 13:16:06 --- quit: gravicappa (Ping timeout: 240 seconds) 13:28:45 --- quit: Zarutian_HTC (Remote host closed the connection) 13:31:07 --- join: Zarutian_HTC joined #forth 13:50:49 --- quit: arrdem (Ping timeout: 260 seconds) 13:52:59 --- join: arrdem joined #forth 15:22:01 --- join: Zarutian_HTC1 joined #forth 15:22:11 --- quit: Zarutian_HTC (Read error: Connection reset by peer) 15:22:47 --- join: dave0 joined #forth 15:50:28 --- quit: arrdem (Ping timeout: 240 seconds) 15:50:33 --- quit: guan (Read error: Connection reset by peer) 15:51:05 --- quit: mjl (Read error: Connection reset by peer) 15:52:07 --- join: guan joined #forth 15:52:09 --- quit: ovf (Ping timeout: 260 seconds) 15:54:18 --- join: arrdem joined #forth 15:54:56 --- join: mjl joined #forth 15:56:16 --- join: ovf joined #forth 16:33:54 --- quit: dave0 (Read error: Connection reset by peer) 16:44:31 --- join: dave0 joined #forth 17:48:05 --- quit: Croran (Ping timeout: 272 seconds) 17:49:59 --- join: Croran joined #forth 18:54:38 --- join: boru` joined #forth 18:54:40 --- quit: boru (Disconnected by services) 18:54:43 --- nick: boru` -> boru 19:00:17 --- quit: dave0 (Quit: dave's not here) 20:32:09 --- quit: kori (Ping timeout: 260 seconds) 20:52:57 --- join: gravicappa joined #forth 20:54:42 --- join: kori joined #forth 21:08:15 --- join: jsoft joined #forth 21:14:33 --- quit: WickedShell (Remote host closed the connection) 21:22:01 --- quit: Zarutian_HTC1 (Remote host closed the connection) 21:28:10 --- quit: kori (Read error: Connection reset by peer) 21:49:38 --- join: kori joined #forth 22:02:17 --- quit: kori (Read error: Connection reset by peer) 22:23:42 --- join: kori joined #forth 22:24:10 --- quit: gravicappa (Ping timeout: 260 seconds) 22:26:46 --- quit: proteus-guy (Remote host closed the connection) 22:29:16 --- join: proteus-guy joined #forth 22:29:16 --- quit: kori (Read error: Connection reset by peer) 22:44:26 --- quit: proteus-guy (Remote host closed the connection) 22:50:56 --- join: kori joined #forth 23:01:28 --- join: dave0 joined #forth 23:03:33 --- quit: kori (Read error: Connection reset by peer) 23:22:17 --- join: proteus-guy joined #forth 23:25:10 --- join: kori joined #forth 23:30:32 --- join: proteus-person joined #forth 23:47:06 --- join: mtsd joined #forth 23:59:59 --- log: ended forth/20.09.23