00:00:00 --- log: started forth/17.08.05 00:29:16 --- quit: rtmanpages (Ping timeout: 255 seconds) 00:54:17 --- join: bb010g_ (uid21050@gateway/web/irccloud.com/x-qzlytjzrowmbtqww) joined #forth 01:04:38 --- quit: jedb (Ping timeout: 248 seconds) 01:17:40 --- join: jedb (~jedb@71.19.248.193) joined #forth 01:31:49 --- quit: dys (Ping timeout: 260 seconds) 01:55:19 --- join: dys (~dys@tmo-101-166.customers.d1-online.com) joined #forth 02:36:11 --- join: rtmanpages (~rtmanpage@16.sub-174-204-3.myvzw.com) joined #forth 03:03:18 --- quit: bb010g_ (Quit: Connection closed for inactivity) 03:06:16 --- join: bb010g_ (uid21050@gateway/web/irccloud.com/x-whnxibesmunnqtqt) joined #forth 03:06:30 --- quit: bb010g_ (Client Quit) 03:08:48 --- join: GeDaMo (~GeDaMo@212.225.125.110) joined #forth 04:47:50 --- join: leaverite (~quassel@175.158.225.192) joined #forth 04:48:07 --- quit: wa5qjh (Read error: Connection reset by peer) 04:57:43 --- join: wa5qjh (~Thunderbi@175.158.225.192) joined #forth 05:11:22 --- quit: leaverite (Remote host closed the connection) 05:11:22 --- quit: wa5qjh (Remote host closed the connection) 06:57:33 --- quit: koz_ (Ping timeout: 260 seconds) 06:59:20 --- join: koz_ (~koz@121.99.240.58) joined #forth 07:00:51 --- nick: Guest98725 -> rprimus 08:01:39 --- quit: Zarutian_PI (Read error: Connection reset by peer) 08:01:42 --- join: Zarutian_PI2 (~3.1415@89.17.133.173) joined #forth 08:01:52 --- nick: Zarutian_PI2 -> Zarutian_PI 09:04:56 --- quit: LeCamarade (Ping timeout: 255 seconds) 09:19:35 --- join: http_GK1wmSU (~deep-book@212.83.139.210) joined #forth 09:19:57 --- part: http_GK1wmSU left #forth 11:39:47 there are a LOT of people in here who never actually participate - who the heck are they lol. are they all bots? 11:39:56 (not suggesting we boot anyone) 11:42:37 I'm a bot 11:46:18 --- join: mtsd (~mtsd@h-158-174-23-206.NA.cust.bahnhof.se) joined #forth 12:01:38 DOES NOT COMPUTE... 12:03:13 I wouldn't be surprised if people set up bouncers and forget about them 12:23:11 --- quit: MrBusiness (Ping timeout: 240 seconds) 12:43:18 1ol 12:59:39 --- quit: irsol (Remote host closed the connection) 13:01:20 --- join: irsol (~irsol@unaffiliated/contempt) joined #forth 13:15:15 --- quit: mtsd (Quit: leaving) 13:35:23 well I have a janky prototype of my auto locals working 13:36:29 : flen ( a -- n ) [{ #stat called buf }] buf stat 0>= nip if buf stat.st_size @ exit then abort" stat failed" -; 13:37:53 allocates some local memory of #stat bytes, creates a temporary word "buf" which returns the address of that memory, and automatically deallocates it when it reaches exit 13:38:43 --- join: MrBusiness (~ArcMrBism@2602:306:8325:a300:a80c:becf:a7c5:ddd7) joined #forth 13:38:55 I'm actually thinking this might replace pad entirely 13:39:19 --- quit: dys (Ping timeout: 240 seconds) 13:40:52 --- quit: GeDaMo (Remote host closed the connection) 13:49:56 --- quit: Uniju (Ping timeout: 240 seconds) 13:52:05 --- join: Uniju (~frog_styl@cpe-74-78-4-232.mass.res.rr.com) joined #forth 14:00:49 --- quit: Uniju (Ping timeout: 260 seconds) 14:02:48 --- join: Uniju (~frog_styl@cpe-74-78-4-232.mass.res.rr.com) joined #forth 14:08:06 --- join: ACE_Recliner (~ACE_Recli@c-98-220-46-30.hsd1.in.comcast.net) joined #forth 14:12:07 --- quit: ACE_Recliner (Remote host closed the connection) 14:28:11 --- join: Chef_Gromboli (~Chef_Grom@static-72-88-80-103.bflony.fios.verizon.net) joined #forth 14:47:42 locals in forth are a mountain of a solution to a mole hill problem 14:48:08 it adds immense complexification to the process both compiling and executing 15:00:08 this is not locals like you normally see 15:00:16 it's not naming arguments 15:01:26 it's more similar to a variable declared inside of a function body in c 15:02:45 I've been liberally changing the dictionary pointer to strings and other data structures so that I can use ordinary compile words with them. https://www.reddit.com/r/Forth/comments/6loglg/loops_that_can_be_factored_use_the_dictionary/ 15:02:53 I think I may want to change the return stack to be a dictionary pointer stack... 15:03:03 zy]x[yz's autolocals may be a new direction for the compiling words. 15:04:08 I should start calling it "autopad" or "auto scratchpad" to avoid invoking kneejerk reactions 15:08:04 right thats whqat locals usually are. and in forth there is no need 15:08:22 that's ridiculous 15:08:34 what is rediculous 15:08:38 the need or absence of a need would depend on what you're writing, not the language 15:09:08 local variables are named entries on the stack 15:09:18 --- join: wa5qjh (~Thunderbi@175.158.225.209) joined #forth 15:09:41 entries on the stack are all only one cell in size, and you can't get the address of them 15:09:56 having those means added complexity to the code that accesses creates them at compile time and added complexity to the code at run time 15:10:28 yep 15:10:28 so if you have 3 variables on the stack called foo/bar and bam and you do a ROT now its bar/bam/foo 15:10:50 the name no longer corresponds to the position of the variable on the stack 15:11:08 or you have to create a stack frame of some kind 15:11:10 no, my autopad isn't stack memory 15:11:15 so now you have totally jacked up the stack 15:11:26 stop thinking of it as stack parameters 15:11:27 it's not 15:11:32 it's more analogous to pad 15:11:37 but with named offsets 15:11:38 ok so now you have a limit on how many variables you can declare 15:11:53 that sounds like user variables to me 15:11:58 of course, you also have a limit to how many items you can have on a stack 15:12:05 which are not local but global 15:12:09 yes 15:12:54 no by limited you are limited by the size that YOU have specifically allocated to the variablews 15:13:12 ...yes 15:13:13 stacks are grows down. you push one more item than there is stack space for and linux allocates more stack space 15:13:27 yes youc an go OOM but thats not a limitation placed on your application BY your application 15:13:52 you need a global variable create a global variable 15:14:20 with your locals if you allocate a certain space in the array for some function thats never executed you wasted that space 15:14:28 no. 15:14:35 on the other hand if those variables were simply stack based parameters... no waste 15:14:44 good lord stop just making shit up because you hate anything new 15:14:49 --- quit: jedb (Ping timeout: 240 seconds) 15:15:03 --- join: d33pb00k-GK1wmSU (~Pyatibrat@23.27.18.240) joined #forth 15:17:03 pointfree, I'm into that. I was thinking at one point about whether there would be a nice way to generalize "crawling" memory accessors 15:18:19 I know cmforth uses an address register an all of the fetches and stores auto-increment it, but it's not stacked so any word you invoke between use could clobber it 15:18:34 s/register an/register and/ 15:19:39 --- part: d33pb00k-GK1wmSU left #forth 15:28:04 --- join: jedb (~jedb@71.19.248.193) joined #forth 15:33:44 zy]x[yz: I'm also entertaining the idea crawling memory accessors for sparse or not-physically-contiguous data structures. I've been thinking that dense data structures don't really waste less memory unless the data structures are very irregular and unpredictable -- there's a lot of idle memory in the middle. 15:33:56 If data is irregular use dense data structures, if it's regularly structured use sparse data structures. I guess I would start by making two dense memory regions in a single space by having one accessor write to every even byte and the other write the every odd byte. 15:34:41 (not sure exactly what downsides there might be to this) 15:35:12 that would seem to need two data caches. one for odd, one for even 15:47:12 so my aarch64 forth can now compile a bunch of my extensions (but there will be bugs in them that need to be resolved) and can now fsave out the extended forth 15:47:18 and the fsaved file WORKS lol 15:47:34 but there are stupid inconsistencies in the elf format that i really need to understand 15:48:52 Well I'm using a Cortex-M3, and I don't think the Cortex-M3 has data caches except possibly for flash memory. 15:50:23 thats also thumb2 only right? 15:50:25 no arm? 15:50:59 you could probably use my t4 project as a reference for some things 15:51:06 thats thumb2 for linux 15:51:23 tho the entry point HAS to be arm. it interworks to thumb2 and never switches back 16:05:08 --- join: karswell_ (~user@207.91.199.146.dyn.plus.net) joined #forth 16:05:37 --- quit: karswell (Read error: Connection reset by peer) 16:10:46 --- quit: wa5qjh (Ping timeout: 246 seconds) 16:56:45 ok so my aarch64 forth now compiles all the extensions. now i remove each extension till i get a working executable again, add them back in one at a time and fix them :) 16:56:47 ezpz 17:22:19 --- join: smokeink (~smoke@59.53.67.230) joined #forth 17:22:19 --- quit: smokeink (Client Quit) 17:56:42 --- join: wa5qjh (~Thunderbi@175.158.225.209) joined #forth 18:43:13 --- quit: wa5qjh (Remote host closed the connection) 18:46:10 --- join: wa5qjh (~Thunderbi@175.158.225.209) joined #forth 18:48:35 --- quit: wa5qjh (Read error: Connection reset by peer) 18:54:05 --- join: wa5qjh (~quassel@175.158.225.209) joined #forth 18:54:48 --- join: leaverite (~Thunderbi@175.158.225.209) joined #forth 19:01:01 --- quit: Chef_Gromboli (Quit: Leaving) 20:40:17 --- quit: Bunny351 (Ping timeout: 260 seconds) 20:51:41 mark4: Cool! 20:51:54 a lot of work still to do :P 20:52:16 but if its compiling every extension that proves a major portion of the kernel 20:54:13 mark4: Is this t4 or is the aarch64 forth another project? 20:54:52 its based off of t4 but t4 is thumb2 and aarch64 is not thumb2 20:55:18 t4 was also based off of x4 21:08:11 Well it looks like t4 has a thumb2 assembler https://github.com/mark4th/t4/blob/master/src/ext/armasm.f which is interesting to me as a reference etc. 21:08:12 I may want a forth disassembler SEE word that disassembles machine code into high-level forth code. It should be doable because forth words are essentially levels of abbreviations for machine instructions. 21:08:12 Use the encoded instruction sequence as a name and dereference to the ascii name (longest matching definition, use the link field as usual). Where there is no matching high level word you just get a lower level word name. 21:33:36 --- join: Bunny351 (~Bunny351@p4FD2E31E.dip0.t-ipconnect.de) joined #forth 21:51:59 t4 is thumb2 asm 21:52:34 well thumb2 opcodes are not as bad as arm but they are still pretty horriffic. aarch64 seems easier :) 21:52:49 but arm opcode encodings have alwasy been a cluster $^&$* 21:53:15 my decompiler "see" is slightly brokenin x4 too. need to rewrite from scratch 21:53:49 and get it to work in t4 and a64 that im working on right now. problem is pretty much every one of my extensions needs to be modified for each arch i port to :/ 21:54:03 which is annoying 21:54:21 and i refuse to do "conditional compilation" and interleave all the differences into the same source files 21:54:29 thats an even worse cluseter a$*^$( 21:54:44 i will never add conditional compilation to my forths 21:58:23 btw, t4 will run on aarch64 but i just discovered a bug in it that i have no idea how it got there lol 21:58:31 its like half an edit of a full edit i know i did :P 21:58:49 its b0rked without the other part of the edit lol 22:31:17 --- quit: karswell_ (Remote host closed the connection) 23:46:35 --- join: dys (~dys@tmo-100-165.customers.d1-online.com) joined #forth 23:59:59 --- log: ended forth/17.08.05