00:00:00 --- log: started forth/04.01.03 00:44:25 --- join: arke (~chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 01:45:49 --- join: schihei (~schihei@pD9548583.dip.t-dialin.net) joined #forth 01:55:14 * arke is away: sleep 03:03:04 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 03:06:07 --- quit: qFox (Read error: 104 (Connection reset by peer)) 03:06:11 --- join: qF0x (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 07:11:20 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 07:11:49 --- quit: tathi (Client Quit) 07:18:01 --- part: aktnot_ left #forth 08:24:32 --- join: schihei_ (~schihei@pD9E5CC11.dip.t-dialin.net) joined #forth 08:32:44 --- quit: schihei (Read error: 60 (Operation timed out)) 08:52:14 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 08:52:15 --- mode: ChanServ set +o kc5tja 09:24:08 --- join: savage- (~savage@twistedmatrix.com) joined #forth 09:24:30 --- part: savage- left #forth 09:48:56 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 11:13:07 --- quit: schihei_ (Client Quit) 11:51:04 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 11:51:40 Hi Herkamire :) 11:56:50 * arke is back (gone 10:01:38) 11:57:57 hi Robert :) 12:06:59 --- quit: onetom (Read error: 110 (Connection timed out)) 12:12:37 * warpzero is back (gone 14:23:52) 12:55:50 * arke is away: errands 13:01:57 hi Herkamire 13:04:41 hi slava :) 13:05:16 Walk like a champION talk like a champION 13:05:18 Herkamire, i'm working on an http server written in my scripting language. it does server side scripting now 13:05:48 cool :) 13:06:08 slava: the LSD language? 13:06:22 Herkamire, go to http://slava.kicks-ass.org:8888/dictionary.lhtml 13:06:42 Herkamire, this is a dynamically-geneated list of all defined words in the current interpreter; click on one to see the decompiled definition 13:07:03 Herkamire, it doesn't do URL decoding yet, so it won't work with words whose names contian special characters... 13:07:05 lol! nice URL :) 13:13:47 slava: nice :) 13:14:12 slava: how hard would it be to make each word in the definitions a link? 13:14:49 pretty easy 13:15:03 first i need to do a url decoder, as well as converting < and > to &entities; 13:15:17 cool 13:15:21 i put the latest httpd source in index.html 13:15:23 that's great you wrote an httpd 13:15:53 I've thought a bit about what I want an httpd to do 13:15:59 (that apache doesn't) 13:16:37 this is crazy -- once i add bindings for java.nio (async io api) and also a compiler, this http server should be nice and fast 13:16:54 right now its main problem is that it only handles 1 connection at once 13:17:44 yeah, I wrote a couple dummy http servers, and never dealt with concurrent connections 13:17:52 except through tcpserver 13:22:18 compiler... you mean compile java to native machine code? 13:25:32 no, compile lsd to java vm bytecode on the fly 13:25:43 so there is still a dynamic interpreter, but it runs faster 13:25:58 ic 13:31:15 does in run slowly now? 14:10:28 --- join: TheBlueWizard (TheBlueWiz@pc84dn1d.ppp.fcc.net) joined #forth 14:10:28 --- mode: ChanServ set +o TheBlueWizard 14:10:34 hiya all 14:12:28 hi TheBlueWizard :) 14:12:39 hiya Herkamire 14:14:31 good night 14:14:56 g'nite, mur 15:03:01 * arke is back (gone 02:07:11) 15:04:56 arke: don't sleep much? 15:05:09 !? 15:05:17 I was just running some errands, thats all 15:05:22 and missed half of the figuk meeting :( 15:05:28 crap I gotta look at nicks more closely 15:06:50 :) 15:22:47 the fig uk meeting ? 15:22:49 irc.stealth.net / #figuk 15:22:52 come on forthers :) 15:22:55 yep yep yep 15:22:56 right now 15:22:57 i know where its at. 15:22:58 :) 15:22:59 is it on now ? 15:23:05 yup yup yup 16:04:01 * arke is away: afk 16:24:18 * arke is back (gone 00:20:17) 16:52:47 latest in #figuk: 16:52:59 No need to flood. 16:53:09 we were discussing how x86 needs to be revamped. 16:53:15 Robert: I wasn't gonna flood ^____^ 16:53:20 Lies. 16:53:41 Go find out how much sub esi,byte 4 / mov [esi],eax costs compared to push eax 16:53:47 In clocks, that is. 16:53:53 On a modern x86. 16:54:12 nnkay, I'll try to find several CPUs 16:54:14 including AMD 16:54:39 Guess it won't be THAT much of a difference. Just don't look at HelpPCs cycle counts for the 8086. 16:55:28 lol 16:55:39 it might actually be more than you think, since its pipelined. 16:56:02 however, it might not, depends on how b0rked the x86 pipeline is with reads before writes 16:59:27 I was refering to the difference between AMD and Intel CPUs. 17:01:02 Did you find out? 17:01:51 * warpzero is away: Let's get a party goin', let's get a part goin', let's get a party goin', party hard, party hard: irc.wsyntax.com 17:02:59 still looking around. 17:03:06 its harder to find than one might think. 17:03:06 OK :) 17:03:07 gimme a hand 17:03:08 Hehe. 17:03:15 Nah, I was going to do some homework. 17:05:16 ugh 17:05:17 lolk 17:05:27 intel optimization manual does not have the clocks 17:05:47 Oh, well... 17:06:24 I guess you still save a bit compared to doing lodsd / jmp eax every instruction. 17:06:37 And "nest" being a single call instruction. 17:06:51 Even though working with the stack becomes harder. 17:06:53 ugh 17:06:58 yes, STC is definetely faster. 17:07:17 If you could do those register optimizations, it would certainly go a lot faster! 17:08:01 Heh, I can do the inliner, but that one I probably couldn't do... 17:08:08 unless I found a good example of it somewhere 17:08:19 Right, I guess it's rather complex. 17:08:38 Allthough experimenting with it might be fun. 17:09:19 Remember that saving several register to the stack will go faster. 17:09:29 sub esi,byte 4*n 17:09:40 mov [esi+0*4],reg1 17:09:42 mov [esi+1*4],reg2 17:09:46 mov [esi+n*4],regn 17:10:03 Or maybe it's (n-1)*4.. you get the idea. 17:10:43 dunno about that, since repeated write to the same register (even if indirect) will still cause pipe muck 17:11:18 Eh, you only write to esi once. 17:11:22 That's the whole point. 17:11:34 After that you only access memory and the other registers. 17:13:58 oh yeah, true. 17:14:05 but it still mucks once 17:14:10 because of the read-after-write. 17:14:25 so better optimization is to stick sub esi, byte 4 somewhere randomly inbetween 17:14:53 Or afterwards. 17:14:59 Then it'll be write-after-read. 17:15:31 thats better, actually. 17:15:31 * Robert is stupid. 17:15:40 ^___^ 17:15:46 actually, that would be much better. 17:23:49 Hmm..tomorrow I will experiment with that thing. 17:24:04 sweet. 17:24:05 but 17:24:08 I'm not done yet. 17:24:09 :( 17:25:52 --- quit: qF0x (Read error: 104 (Connection reset by peer)) 17:26:15 I mean, the register thingie. 17:26:23 Doesn't seem very hard after all! 17:28:32 how so? 17:28:45 it seems way friggin hard, especially in a stack based language... 17:29:33 Well... 17:29:45 I'll use some pseudo-C code. 17:30:01 register->stack and stack->register conversions are hell. 17:30:05 Robert: !? 17:30:13 string reg[4] = { ecx, edx, ecx, edi } 17:30:23 int index = 0; 17:30:37 Now, for example, compiling the literal "123" would be: 17:30:49 mov reg[index++],123 17:30:55 I.e. mov ecx,123 17:31:14 Let's do it again, but with the literal 666 17:31:18 mov reg[index++],666 17:31:23 I.e. mov edx,666 17:31:26 Addition would be: 17:31:44 add reg[i-2],reg[i-1] 17:31:48 i = i - 1 17:31:52 I.e. add ecx,edx 17:31:55 Hrm. 17:31:57 And edx is freed. 17:32:02 Now here's the beatiful part: 17:32:04 that requires multi-step compilation though :(( 17:32:14 drop can be optimized to: 17:32:16 i = i - 1 17:32:23 I.e. no machine code! 17:32:25 swap becomes: 17:32:40 xchg :) 17:32:40 exchange(reg[i-2],reg[i-1]) 17:32:49 I.e. no machine code either! 17:32:49 so xchg ^__^ 17:32:52 No. 17:32:55 er 17:32:55 oh 17:32:56 yeah 17:32:59 That's done compile-time. 17:33:09 dup and over are each one instruction. 17:33:12 you're a genius 17:33:24 I.e. reg[i] = reg[i-1]; i++ 17:33:32 Er 17:33:38 mov reg[i],reg[i-1] 17:33:39 i++ 17:33:40 That is. 17:33:58 And whenever you call a function, you do: 17:34:09 while(i > 0) { 17:34:37 mov [esi-..something],reg[i] 17:34:39 i-- 17:34:39 thatss sweet!!! 17:34:40 } 17:34:45 keep going, i'll brb 17:40:35 A for/next loop would be: 17:40:39 for: 17:41:01 Allocate a register (index j) from the other end of the register list. 17:41:14 mov reg[j],reg[i-1] 17:41:14 i-- 17:41:19 Do stuff... 17:41:21 next: 17:41:34 dec reg[j] 17:41:42 jnz address_to_for 17:41:49 deallocate reg[j] 17:43:45 Just keep the number of stack items used constant in the loop ;) 17:43:52 Same thing about begin/until 17:44:50 Hrm. One problem though - the number of stack items used in a certain function has to be known. 17:45:54 Er.. actually just the number of return values and parameters, now when I think of it. 17:52:01 well, actually, they all need to be knows :(( 17:52:15 Hm? 17:52:18 What do you mean? 17:53:21 Hrm. One problem though - the number of stack items used in a certain function has to be known. 17:53:29 needs to know how many it uses in the beginning as well. 17:54:11 No. 17:54:18 Or how do you mean? 17:54:34 Everything the calling word uses is pushed. 17:54:57 All you need to do is to cache the parameters. 17:54:57 exactly. 17:55:00 Oh. 17:55:02 I know. 17:55:06 i=0 17:55:08 if it needs it, insert it at the end. 17:55:09 lol 17:55:11 ^__^ 17:55:18 mov reg[i++],[esi] 17:55:20 mov reg[i++],[esi+4] 17:55:21 etc. 17:55:27 add esi,byte x 17:55:49 what happens if it runs out of registers though? (especially on an intel :( ) 17:55:57 You have 6 registers. 17:56:03 That's a lot. 17:56:27 Even if you use a for loop, you still can have 5 stack items. 17:56:37 That's enough to do something like... 1 2 3 4 5 + + + + 17:56:45 eax, ebx, ecx, edx, edi, ebp 17:56:50 6... 17:56:52 I guess you're right. 17:56:54 Yep. 17:57:08 the TOS always being cached first. 17:57:18 Right. 17:57:24 I should implement o: and o; in isforth, just to try it. 17:57:33 er... 17:57:39 nevermind, won't work in isforth :(( 17:57:42 No. 17:57:51 damn DTC. 17:57:53 Write a new Forth. 17:58:07 Or a simple Forth program outputing optimized asm code. 17:58:11 Just to test the idea. 17:58:33 or just finish F and use that. 17:58:37 ^______________________________^ 17:59:04 I have lots to do before wednesday. 17:59:15 I have to completely write a term paper, finish F, do the register thing. 17:59:16 ^__6 17:59:55 :) 18:01:01 when do you usually wake up? 18:01:10 (your time) 18:01:16 2pm ;) 18:01:21 But I'll set the clock 18:01:29 (because you fall asleep at 4am :))) ) 18:01:50 aah, ok. 18:01:59 Might have something to do with it.. 18:02:06 2pm your time is 5am my time. 18:02:19 well, we can talk tomorrow then ^___^ 18:02:26 I'm gonna let my bro use the computer 18:02:27 later 18:02:29 --- quit: arke ("Leaving") 18:02:29 Probably. 18:17:19 --- join: Sonarman (~matt@adsl-64-171-255-248.dsl.snfc21.pacbell.net) joined #forth 18:31:03 gotta go...bye all 18:31:03 --- quit: Sonarman (Read error: 54 (Connection reset by peer)) 18:31:08 --- part: TheBlueWizard left #forth 18:37:28 --- join: imaginator (~gps@166.70.196.201) joined #forth 19:32:44 --- quit: imaginator (".") 19:42:07 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 19:42:07 --- mode: ChanServ set +o kc5tja 20:46:41 --- quit: Herkamire (sterling.freenode.net irc.freenode.net) 20:46:41 --- quit: I440r (sterling.freenode.net irc.freenode.net) 20:46:41 --- quit: cmeme (sterling.freenode.net irc.freenode.net) 20:46:41 --- quit: skylan (sterling.freenode.net irc.freenode.net) 20:46:47 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 20:46:47 --- join: I440r (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 20:46:47 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 20:46:47 --- join: skylan (~sjh@vickesh01-4902.tbaytel.net) joined #forth 20:47:51 --- quit: Herkamire (sterling.freenode.net irc.freenode.net) 20:47:51 --- quit: skylan (sterling.freenode.net irc.freenode.net) 20:47:51 --- quit: cmeme (sterling.freenode.net irc.freenode.net) 20:47:51 --- quit: I440r (sterling.freenode.net irc.freenode.net) 20:48:13 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 20:48:13 --- join: I440r (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 20:48:13 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 20:48:13 --- join: skylan (~sjh@vickesh01-4902.tbaytel.net) joined #forth 20:50:06 --- quit: Herkamire (sterling.freenode.net irc.freenode.net) 20:50:06 --- quit: skylan (sterling.freenode.net irc.freenode.net) 20:50:06 --- quit: cmeme (sterling.freenode.net irc.freenode.net) 20:50:06 --- quit: I440r (sterling.freenode.net irc.freenode.net) 20:50:28 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 20:50:28 --- join: I440r (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 20:50:28 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 20:50:28 --- join: skylan (~sjh@vickesh01-4902.tbaytel.net) joined #forth 21:45:52 --- quit: I440r ("Leaving") 21:48:06 --- join: Sonarman (~matt@adsl-66-124-255-54.dsl.snfc21.pacbell.net) joined #forth 21:49:42 --- join: I440r (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 21:59:17 --- quit: fridge ("Client exiting") 23:01:55 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 23:05:49 --- join: Sonarman_ (~matt@adsl-66-124-254-7.dsl.snfc21.pacbell.net) joined #forth 23:08:37 --- quit: Sonarman_ (Client Quit) 23:16:21 --- quit: Herkamire ("bedtime") 23:17:30 --- quit: Sonarman (Read error: 110 (Connection timed out)) 23:17:59 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 23:29:15 --- join: arke (~chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 23:29:55 hiya 23:59:59 --- log: ended forth/04.01.03