00:00:00 --- log: started forth/17.06.24 00:32:10 --- quit: sigjuice (Quit: ZNC - http://znc.in) 00:35:11 --- join: sigjuice (~sigjuice@2604:a880:1:20::83:6001) joined #forth 01:42:24 --- join: LeCamarade (~revence@139.59.111.106) joined #forth 01:56:54 GeDaMo, zy]x[yz: not only are there esolangs like that (hi Befunge!) but I've heard at least one proposal for making a serious language with multidimensional control flow 02:11:52 --- quit: proteus-guy (Ping timeout: 240 seconds) 02:12:35 --- quit: proteusguy (Ping timeout: 258 seconds) 02:20:40 --- join: MickyW (~MickyW@p4FE8D6FE.dip0.t-ipconnect.de) joined #forth 02:32:40 --- join: proteusguy (~proteus-g@2405:9800:b408:bc31:299f:cff6:279f:5c1d) joined #forth 02:32:40 --- mode: ChanServ set +v proteusguy 03:04:22 --- join: true-grue (~true-grue@176.14.219.178) joined #forth 03:26:01 --- join: GeDaMo (~GeDaMo@212.225.125.110) joined #forth 03:46:56 --- nick: DGASAU` -> DGASAU 03:53:58 jedb, now that you mention it I feel like I read something abiut that once ("why is my code one-dimensional? I should be able to format it two-dimensionally in columns and branch between them" or something like that), but now I can't remember tbe context in which I saw that 04:21:49 --- quit: nighty- (Quit: Disappears in a puff of smoke) 05:15:43 --- join: dual (~bonafide@199.21.100.130) joined #forth 05:16:20 --- quit: dual (Client Quit) 05:16:37 --- join: dual (~bonafide@199.21.100.130) joined #forth 05:53:20 PDD-8... 05:53:50 12-bitness was not a limitation there. 05:54:15 Even later machines had as much RAM. 06:39:01 --- nick: ZarutianPI2 -> ZarutianPI 06:44:36 --- quit: dual (Ping timeout: 246 seconds) 06:48:28 --- quit: MickyW (Quit: Leaving. Have a nice time.) 06:56:49 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 08:11:23 --- join: nighty- (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 09:35:34 --- quit: MrBusiness (Ping timeout: 255 seconds) 09:35:41 --- join: MrBismuth (~ArcMrBism@2602:306:8325:a300:5003:2c79:73f6:99bb) joined #forth 09:48:16 --- nick: Guest25692 -> rprimus 12:19:37 --- quit: meta4 (Quit: That's it for today) 12:21:30 --- quit: DGASAU (Read error: Connection reset by peer) 12:21:59 --- join: DGASAU (~user@lmpc.drb.insel.de) joined #forth 12:26:58 ZarutianPI: BTW, call and exit is not enough, unless you mean that your "call" is actually "branch-and-link" with indirect target, so that you could implement conditional branching. 12:37:16 --- quit: DGASAU (Read error: Connection reset by peer) 12:44:09 --- join: DGASAU (~user@lmpc.drb.insel.de) joined #forth 12:51:52 --- quit: irsol (Ping timeout: 240 seconds) 12:59:39 --- join: irsol (~irsol@unaffiliated/contempt) joined #forth 13:38:09 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 13:38:42 DGASAU: call does basically push the current pc onto the return stack and set pc as the call destination, exit pops the return address off the return stack and set pc to that. 13:39:34 Call can be implemented otherwise. 13:40:25 What you describe is only one of possible implementations. 13:40:26 DGASAU: the instruction encoding in this ISA is very simple: anything below 0x0010 is an primitive instruction everything else is a call to that address. 13:42:06 Consider call as implemented on (hrm!) PDP-8. 13:42:29 It is pretty much valid implementation, even though more restricted. 13:43:07 Or on System 360. 13:43:10 well, my question specified a hardware dual stack machine. 13:43:45 Then it is not just "call". 13:43:53 what in the world where the IBM engineers thinking there? spefically that long running instruction. 13:44:32 AFAIK, ARM implements nearly the same construct as System 360. 13:44:54 branch-and-link? sure 13:47:44 If you don't have any other access to your "return" stack than "exit", it is pretty fine implementation of "call" already. 13:48:01 Yet it is strictly less powerful than branch-and-link. 13:49:23 DGASAU: come on. it is clear from context in that conversation that call was intended to mean branch-and-link 13:49:38 either with a link register or manipulable return stack 13:50:10 Again, there is one essential detail that you miss. 13:50:20 which is? 13:50:22 Do you have any other access to said register or stack? 13:50:26 If yes, which one? 13:51:49 On register-based von Neuman style machine "branch-and-link" stores link in general-purpose register. 13:52:25 a general purpose register or a stack one can read and write both work here 13:52:30 On your Harward style restricted architectures it isn't clear from context which access you have to stored links. 13:52:57 Again, on general-purpose machines stack is usually general-purpose one. 13:53:30 Your weird architecture design may differ significantly. 13:53:41 no, but it is clear from context that you need to be able to access the stored links, and clear from context that this was for a not-yet-implemented stack machine for fpga 13:53:49 * DGASAU sighs. 13:53:57 so that means being able to read and write the links is a design consideration if you want to do it that way 13:54:04 You can access them in _fundamentally_ different ways. 13:55:07 Depending on those ways, you may get either kind of approximation for Turing machine or decider. 13:55:29 Decider is a lot narrower subclass of TM. 13:56:16 if you can read and write the return pointer you have a turing machine 13:56:20 if not, then you don't 13:56:28 Wrong. 13:57:15 ? 13:59:19 or let me restate: if you can read and write the return pointer, i am certian you have a turing machine. i do not immediately see how to implement one if you can't do that. 14:00:57 You may have it, and you may not, depending on what exactly your write operations allow. 14:02:17 If you can push random trash into your "return stack", you don't need "call" even. 14:02:26 --- quit: GeDaMo (Remote host closed the connection) 14:02:28 "Exit" is enough. 14:02:29 that is true 14:03:01 Because that means that you're implementing some weird variation of KM. 14:05:03 KM? 14:06:18 Krivine machine. 14:15:23 --- quit: ncv (Remote host closed the connection) 14:20:32 To reiterate, original consideration was "The only control flow instructions provided are call and exit." 14:20:45 "Only" is essential word here. 14:21:17 If you have only "call" and "exit" accessing your return stack, you have finite pipeline. 14:21:27 If you have something like "rdrop", the same. 14:21:57 01:40 < ZarutianPI> Can you write or port a forth on top of that? including cond 14:21:57 itional branching and such? 14:21:57 01:50 <@koisoke> ZarutianPI: i assume it's implied i can't cheat by using >r exi 14:21:57 t as a jmp? 14:21:57 01:52 < ZarutianPI> koisoke: cheat away! It is just that calls and exit are the 14:22:00 only control flow primitive instructions provided. 14:22:17 == provided you can push "random garbage" to your control stack, it is possible 14:22:25 s/control stack/return stack/ 14:24:16 If you can push random trash, you don't need "call". 14:24:21 that is true 14:24:32 you only need call for position-independent code 14:24:45 Not even that. 14:25:36 or at least you need some way to implement relative branches 14:26:07 If you can push random trash, you can add numbers and push result of such addition. 14:26:22 if you have some way of finding the current pc value 14:26:43 That's usually a lot milder restriction. 14:27:08 If you can push trash to your control stack, why can't you learn your absolute position? 14:31:02 you could if the stack is structured so you can look at values that have been popped off it but not overwritten 14:31:51 assuming you enforce not branching into the middle of a procedure 14:32:33 If you can implement conditional drop, you'll have TM most likely. 14:33:53 Right, TM. 14:34:55 --- quit: Zarutian (Quit: Zarutian) 15:29:34 --- quit: true-grue (Read error: Connection reset by peer) 16:22:47 --- quit: nighty- (Quit: Disappears in a puff of smoke) 16:23:27 --- join: nighty- (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 16:27:29 --- join: Chef_Gromboli (~Chef_Grom@static-72-88-80-103.bflony.fios.verizon.net) joined #forth 17:41:18 --- join: Canaimero-15d5 (~canaima@190.73.171.95) joined #forth 17:47:02 --- part: Canaimero-15d5 left #forth 18:49:48 --- quit: wa5qjh (Remote host closed the connection) 18:52:49 --- join: wa5qjh (~Thunderbi@121.54.90.145) joined #forth 20:29:19 --- quit: Bunny351 (Ping timeout: 240 seconds) 21:10:14 --- join: Bunny351 (~Bunny351@p4FD2D3E9.dip0.t-ipconnect.de) joined #forth 21:34:43 --- quit: proteusguy (Remote host closed the connection) 21:48:11 --- quit: Chef_Gromboli (Quit: Leaving) 22:51:53 --- join: proteusguy (~proteus-g@180.183.116.1) joined #forth 22:51:53 --- mode: ChanServ set +v proteusguy 23:59:59 --- log: ended forth/17.06.24