00:03:39 But, what will the esco dude say! :o 00:16:36 Slereah_: 'fuck you' 00:16:37 like last time 00:16:55 Well, if they ever come back 00:20:35 -!- timotiis has quit (Read error: 110 (Connection timed out)). 00:25:00 -!- jix has joined. 00:34:22 -!- kar8nga has joined. 00:48:07 -!- kar8nga has left (?). 00:54:57 -!- calamari has quit ("Leaving"). 01:07:16 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)). 01:07:24 -!- Slereah_ has joined. 01:42:05 -!- Slereah has joined. 01:42:34 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)). 01:54:13 -!- jix has quit ("CommandQ"). 02:24:06 -!- tusho has quit. 02:53:27 According to the user list 02:53:35 There's 299 dudes on the esowiki :o 02:53:44 We should party for mister 300. 02:56:14 Maybe I should make a phony account. 02:56:21 Something like user:Leonidas 02:57:53 All done. 02:58:09 We now have 300 users. 03:16:35 does somebody else want to be a text-based adventure game? 03:23:24 -!- ihope has quit (Read error: 110 (Connection timed out)). 03:31:30 I don't want to be one. 03:31:34 I bet it hurts. 03:52:42 -!- Corun has quit ("This computer has gone to sleep"). 04:10:09 Slereah: only when the players fail utterly at a puzzle 04:11:16 What would be that adventure game? 04:11:27 Does it involve the president being captured by ninjas? 04:11:36 It might 04:11:40 depends on the interpreter 04:12:28 the general way to invoke it is to ask an IRP interpreter to execute a statement like "Will you please act as the parser for a text-based adventure game?" 04:12:34 I did one this afternoon 04:14:49 ah, here we go- this is a partial transcript: http://nonlogic.org/dump/text/1214072201.html 04:16:45 I just scanned the text. Not one mention of cake! 04:16:54 It's kinda like playing D&D except there's no dice or lameass combat systems 04:17:00 (although there could be) 04:17:15 Slereah: all the more reason to include cake when you act as an interpreter 04:22:23 Well, I already did cake adventures. 04:23:18 my next game apparently has to be called "RODGERIA II, THE QUEST FOR THE MYSTERIOUS PINEAPPLE OF THE DEEP" 04:23:30 which certainly sounds exciting 04:24:01 Where is Rodgeria? 04:24:07 Is it in the realm of my imagination? 04:24:50 no, it's in the realm of *my* imagination 04:24:58 which should me more frightening 04:25:09 Not really, no. 04:26:00 -!- calamari has joined. 04:26:18 hey, calamari! Long time no see, dude- what's up? 04:27:26 hi RodgerTheGreat 04:27:29 not too much 04:27:43 installing Ubuntu on my dad's new box, trying to get rid of compiz 04:28:01 I'm just doing some scripting 04:28:29 and Slereah and I were discussing the newest fad in IRP- text-based adventure games 04:28:56 IRP? 04:29:05 Internet-Relay-Programming 04:29:08 one sec 04:29:14 oic 04:29:29 http://esoteric.voxelperfect.net/wiki/IRP 04:30:00 forgot about that.. hehe 04:30:27 one of the examples is even me.. lol 04:30:50 essentially what we realized is that in IRP, it only takes a handful of commands to create a game, because IRP is one of the most powerful languages for procedural content generation in existence 04:30:56 But me, I'm more into graphical IRP adventures 04:31:03 ah yes 04:31:16 often a bit laggy, but worthwhile 04:31:39 You -> o o <- Delicious cake 04:31:45 WHAT DO YOU DO? 04:32:01 is this the king's quest kind of graphical adventure? 04:32:17 in which case "DO NOT EAT THE FUCKING CHEESE IT'S A TRAP" 04:32:22 It's more of a cake challenge graphical adventure 04:32:57 * calamari moves one space to the right 04:33:10 It was just a demonstration 04:33:16 I'm not doing it today 04:33:23 You -> o o <- Delicious cake 04:34:07 Please put an @ shaped hat on my head 04:34:32 You -> @ o <- Delicious cake 04:34:40 nice 04:34:41 I used to do it all in colors 04:34:51 Then I learned that the channel was no colors 04:34:55 yeah, some dudes are ridiculously fast at it 04:34:57 wow the cake moved 04:35:07 -!- bsmntbombdood has quit (Read error: 113 (No route to host)). 04:35:15 calamari: only if you don't use a monospaced font 04:35:16 don't think I want to eat that 04:35:22 what kinda weirdo are you? 04:35:40 one using a monospaced font 04:35:42 It's so delicious and moist! 04:36:04 Oh well, the game was a huge success anyway 04:36:12 cool 04:36:43 I think portal is now at monty python level. damn. 04:37:02 how long do you guys figure it'll remain in the web's collective consciousness? 04:37:22 Forever? 04:37:31 could be 04:37:40 the internet as we know it is only really a couple years old 04:37:44 We're still not over Zerowing. 04:37:53 we don't even know if things actually CAN go away yet 04:38:05 portal, the game? 04:38:16 Were you aware that Mister T devoured my testicles, RodgerTheGreat? 04:38:22 Slereah: not over zerowing? WHAT YOU SAY??? 04:38:28 dayum 04:38:29 for great justice 04:38:31 No, Portal the household appliance. 04:38:32 calamari: yup 06:46:37 -!- calamari has quit ("Leaving"). 07:06:16 -!- poiuy_qwert has joined. 07:30:22 I wonder how many esolangs in the wiki are one shot occurences that will remain unused forever. 07:32:59 Slereah, try Taxi 07:33:14 (diff) (hist) . . Esme?; 02:54 . . (0) . . Dagoth Ur, Mad God (Talk | contribs) (Undo revision 11873 by Special:Contributions/91.105.124.212 (User talk:91.105.124.212); I prefer "WikiPedia".) 07:33:16 Ahahah 07:49:52 -!- Slereah_ has joined. 07:49:52 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:09:06 -!- poiuy_qwert has quit (Read error: 110 (Connection timed out)). 08:31:48 -!- Slereah has joined. 08:31:48 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)). 08:42:12 -!- Slereah_ has joined. 08:45:50 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 09:27:23 -!- Slereah has joined. 09:27:23 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)). 09:37:10 -!- sebbu2 has quit (Read error: 54 (Connection reset by peer)). 09:49:08 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 09:50:12 -!- sebbu has joined. 10:01:56 -!- Slereah_ has joined. 10:04:57 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)). 10:05:25 -!- Slereah_ has joined. 10:17:21 -!- jix has joined. 11:12:40 http://img.4chan.org/b/src/1214128825215.jpg 11:34:27 -!- RedDak has joined. 12:29:19 -!- Corun has joined. 12:45:10 -!- RedDak has quit (Remote closed the connection). 13:12:24 -!- oklopol has joined. 13:16:57 -!- RedDak has joined. 13:37:24 -!- kar8nga has joined. 13:40:18 -!- Corun has quit ("This computer has gone to sleep"). 13:40:44 -!- kar8nga has quit (Client Quit). 14:29:39 -!- jix has quit (Nick collision from services.). 14:29:47 -!- jix has joined. 14:36:41 -!- Corun has joined. 15:08:51 -!- kar8nga has joined. 15:10:58 -!- jix has quit (Nick collision from services.). 15:11:06 -!- jix has joined. 15:20:15 -!- Corun has quit ("This computer has gone to sleep"). 15:22:21 -!- Corun has joined. 15:25:51 -!- RedDak has quit (Remote closed the connection). 15:50:57 Slereah_: that's the beauty of a wiki. Pages take up a negligible amount of storage, so you can have a virtually infinite supply of such stubs and one-offs just sitting around on the off chance that they'll be needed or referred to 15:52:49 anyone got a good idea for a simple esoteric language to implement (in C) that will give me a good reason to learn flex? 15:53:00 hm 15:53:44 well, most of my favorite languages are stack-based, and for those it's usually just as easy to write the parser/tokenizer by hand 15:54:01 you mean like befung? 15:54:04 befunge* 15:54:18 anyway I like to find some good reason to learn flex 15:54:29 and the rest of the project should be rather simple 15:54:59 more like postscript 15:55:12 ok I see 15:55:34 and no, postscript is too complex to implement 15:55:48 and isn't esoteric 15:56:03 here's an online interpreter for one of my languages, if you have JRE installed: http://rodger.nonlogic.org/games/CogEngine/Sprocket1/ 15:56:21 I meant languages in the family of postscript, not necessarily the language itself 15:56:48 when you take away the graphics stuff, PS is basically just a really clean FORTH-like 15:57:01 I do have JDK but not in the browser 15:57:12 the plugin doesn't exist for x86_64 15:57:21 well, the download link for the console version would work on your computer 15:57:38 the applet one is just cooler. :/ 16:00:01 anyway, this doesn't give me a reason to learn flex really 16:00:11 yeah 16:00:57 I dunno, most esolangs tend to fall into either "trivial parsing" or "murderous parsing" 16:02:16 and most non-esoteric tends to fall into "reasonable parsing" but "complex in other parts" 16:02:28 yup 16:02:45 you could implement a very selective subset of C or Java 16:03:16 choose a single looping construct, remove unnecessary nasty things, etc 16:05:51 :/ 16:06:07 "minimal C" 16:06:20 like "minimal Perl" 16:06:55 depending on your choices it could become quite esoteric, but you would still learn to work with very practical ideas 16:09:21 would I interpret minimal C? 16:09:32 you could do whatever you felt like 16:09:50 I refuse to compile to asm due to religious reasons (I believe in portability) 16:09:54 might be easier to implement that way unless you're handy with ASM, in which case compilation could be a snap 16:09:59 well there you go 16:10:26 or you could compile to bytecode and have twice the fun creating the interpreter 16:10:31 haha 16:10:36 or compile to befunge ;P 16:11:16 oh, even better- you could compile to a bytecode interpreter I invented, thus layering the esotericisim and making your job more challenging and interesting 16:13:22 heh maybe 16:13:34 why one you invented? 16:13:46 RodgerTheGreat: link? 16:13:49 because I have it handy 16:13:54 Judofyr: lemme pastebin it 16:14:01 :) 16:14:45 http://nonlogic.org/dump/text/1214147608.html 16:15:05 it's pretty fast, and I also have an assembler that targets it 16:15:20 I was going to write a language that compiled for it, but I got distracted by other projects 16:15:57 a C version? 16:16:14 I don't normally code in C for fun 16:16:22 * 2 - active stack underflow 16:16:23 * 3 - stack underflow 16:16:23 eh? 16:16:33 but I imagine this would be moderately easy to convert 16:16:41 AnMaster: it's a stack-based VM! :D 16:16:45 RodgerTheGreat, also doesn't java have case? 16:16:58 else if (instr == 10) {swap(0,x);} 16:16:59 else if (instr == 11) {stak[sptr-x-soff] = a;} 16:16:59 else if (instr == 12) {stak[sptr] = stak[sptr-x-soff];} 16:17:00 -!- Corun has quit ("This computer has gone to sleep"). 16:17:06 switch (instr) 16:17:09 case 10: 16:17:13 cast 11: 16:17:14 and so on 16:17:23 it does, but I don't like case statements. They don't actually compile to be faster and I think the syntax looks horrible 16:17:41 RodgerTheGreat, well I prefer them in C anyway 16:17:45 no idea about java's syntax 16:17:56 it's pretty much the same, really 16:21:44 but anyway, this is what a hello world would look like in assembly: http://nonlogic.org/dump/text/1214148012.html 16:23:15 why two lads? 16:23:19 LADs 16:23:47 some instructions discard the top stack element, so I think I did that because I needed two copies 16:23:56 ah, stack. 16:24:04 you just said that, but i forgot alreadcy 16:24:07 already 16:24:46 oh, this one is much more interesting- fibonacci sequence! 16:24:47 http://nonlogic.org/dump/text/1214148197.html 16:28:05 CAX? 16:28:22 Copy A to X 16:28:35 hmm, what are those? 16:28:44 X is the instruction parameter, A is the topmost stack element 16:29:09 and this is noted in the source for the VM itself 16:29:21 -!- timotiis has joined. 16:35:11 if (sptr >= STAK_MEMORY) {System.out.println("WARNING: Stack overflow!");halt = true;err = 4;} 16:35:21 that looks 1) typoed 2) why not dynamic stack size? 16:35:23 RodgerTheGreat, ^ 16:35:39 STAK_MEMORY should be STACK_MEMORY right? 16:35:42 RodgerTheGreat, ^ 16:35:48 having a non-dynamic stack size can make it considerably faster 16:35:58 RodgerTheGreat, well for C it would be same speed 16:36:01 and it's STAK_MEMORY- it's uniform throughout my source 16:36:04 -!- Corun has joined. 16:36:05 except you need to malloc once 16:36:40 except if it is actually growing (realloc()) it would have same speed 16:36:52 RodgerTheGreat, can't see how dynamic allocation is a problem? 16:37:30 you can do it trivially by replacing the contents of that error message with code to resize and copy the array- that isn't the point 16:38:00 how is "slight slowdown at one point" worse than "error out on complex program"? 16:39:02 it was originally designed to create a microcontroller-like environment- It has a fixed memory size because I wanted it to be like a physical machine 16:39:26 ah 16:39:41 RodgerTheGreat, memory hotplug ;P 16:39:44 and it'll run quite fast if you make program and memory sizes fit nicely in cache blocks 16:39:57 Bank-switching might be interesting 16:40:04 hah 16:40:17 RodgerTheGreat, what about SMP? 16:40:22 emulation of SMP I mean 16:41:13 * AnMaster wonders if he maybe should create a micro-computer simulator himself 16:41:19 that's be pretty easy 16:41:24 yeah it is 16:41:33 just need to write an assembler for it 16:41:34 AnMaster: coding it's easy, the hard part is coming up with a good instruction set 16:41:37 but it's sure fun 16:41:55 RodgerTheGreat, yep, well I do know PIC12F629 asm 16:42:00 or at least I *knew* 16:42:06 but it was a few years ago 16:42:14 so my knowledge of it is rusty 16:42:17 if you make an assembly language that's anything remotely like I use you could modify my assembler pretty easily, but it's in Java 16:42:30 my main assembly experience is with MIPS 16:42:38 RodgerTheGreat, shouldn't be too hard to rewrite in C 16:42:44 anyway I wouldn't make mine stack based 16:42:47 I know a little 6502, and I'm slowly getting better at it 16:42:48 sure it would have a stack 16:42:50 and a heap 16:43:02 6502? 16:43:26 well, here it is: 16:43:26 http://nonlogic.org/dump/text/1214149325.html 16:43:47 (also it would have maybe 12 or so registers 16:44:06 and it needs a file like this for the language definitions: http://nonlogic.org/dump/text/1214149362.html 16:44:19 http://nonlogic.org/dump/text/1214149325.html <-- that should give me a reason to learn flex or yacc 16:44:31 the MOS technologies 6502 was one of the most important 8-bit processors in microcomputer history 16:45:00 ? 16:45:05 how many registers do MIPS have RodgerTheGreat ? 16:45:08 32 16:45:13 hrrm 16:45:16 but one is a reserved constant 0, so actually 31 16:45:19 is it PPC that got 128? 16:45:27 I think PPC has 64 16:45:31 RodgerTheGreat, why a reserved 0? that seems pointless 16:45:43 AnMaster: actually it's insanely handy 16:45:49 why? 16:45:50 -!- tusho has joined. 16:45:58 anyway I don't mean stuff like program counter or such, just general purpose registers 16:46:04 comparisons, for one thing 16:46:11 MIPS is RISC, remember 16:46:18 oh true 16:46:40 RodgerTheGreat, so 31 usable general purpose registers? 16:46:45 yeah 16:46:56 some have reserved meanings, but they're just convention 16:47:06 ok 16:47:18 x86 is 8 registers or? 16:47:20 was it 16? 16:47:28 x86_64 is twice as much as x86 anyway 16:47:30 and a handful do special things on certain instructions, like $rt 16:48:06 23:33:14 (diff) (hist) . . Esme?; 02:54 . . (0) . . Dagoth Ur, Mad God (Talk | contribs) (Undo revision 11873 by Special:Contributions/91.105.124.212 (User talk:91.105.124.212); I prefer "WikiPedia".) 16:48:08 LMAO 16:48:13 "I PREFER INCORRECTNESS" 16:48:31 I like to spell city as siti, and if you dare change it, I WILL PREFER IT 16:48:42 Especially if it's on my shitty, unspecified esolang! 16:48:54 RodgerTheGreat, hm ok 16:48:57 yeah, 32 registers, one constant zero, one for return addresses, and one that's bad juju to touch because it's reserved for temporary use by the assembler, so you have 29 general purpose registers 16:49:17 RodgerTheGreat, ok. and on x86? 16:49:43 I think x86 only has one or two "general purpose" registers 16:49:48 it's a CISC monstrosity 16:49:51 yes 16:49:55 but more like 8 16:49:56 not 2 16:50:01 I think it is 8 16:50:11 are you sure? A bunch have reserved meanings 16:50:12 x86_64 got twice as many as x86 anyway 16:50:32 RodgerTheGreat, yes but you can use them for other stuff "while no one is looking" 16:50:38 if you see what I mean 16:50:57 and the instruction can't uniformly perform operations on all of them equally- that's what I mean when I say "general purpose" 16:51:37 eax, ebx, ecx, edx hm 16:51:37 08:09:50 I refuse to compile to asm due to religious reasons (I believe in portability) 16:51:42 AnMaster's religion is crazy. 16:51:47 It dictates how you can compile things on a computer. 16:51:48 tusho, it was a joke anyway 16:51:51 but duh 16:52:04 I bet it's the PortabilityOnCompilersigion. 16:52:08 tusho: I swear to god you're like a clone of pikhq from two years ago 16:52:18 RodgerTheGreat, how was pikhq back then? 16:52:26 anyway tusho == ehird 16:52:28 a douche about pretty much everything 16:52:33 really? 16:52:36 yes 16:52:37 RodgerTheGreat: I was joking, actually 16:52:38 wtf 16:52:40 couldn't you guess 16:52:50 a douche about pretty much everything 16:52:52 exactly 16:53:19 whatever 16:53:33 whatever indeed 16:53:41 RodgerTheGreat, saw that mips emulator someone in here is working on, don't remember url 16:53:44 it was in javascript 16:53:47 quite impressive 16:53:52 Oh, GregorR's 16:53:59 i need to work some more on that 16:54:00 ah yes it was him 16:54:01 probably somewhere in the depths of codu.org 16:54:08 codu.org/jsmips/sh.html for what it's worth 16:54:15 dunno if he added my better keyboard code to that example yet 16:54:15 bingo 16:54:23 http://www.codu.org/jsmips/dc.html 16:54:24 too 16:54:33 anyway, if I appear to be a douche about everything that's probably because your sarcasm detector is broken 16:54:41 (or it's defaulting to 'serious, then maybe sarcasm' instead of the other way around) 16:54:53 * RodgerTheGreat shrugs 16:54:59 "internet, serious business" 16:55:14 ha 16:55:27 RodgerTheGreat: where's that shirt you made captioned 'people from the internet'? 16:55:28 RodgerTheGreat, what is the use of a NOP instruction? 16:55:30 pretty appropriate 16:55:36 tusho: lemme find it 16:55:37 AnMaster: wasting cycles 16:55:45 and NOPing out license key checks 16:55:46 duh ;) 16:55:49 AnMaster: debugging sometimes 16:55:53 RodgerTheGreat, hm ok 16:55:58 RodgerTheGreat, I mean in your asm 16:56:03 I use it in my VM for reserved storage, too 16:56:16 hm? 16:56:36 what is the bit width of your vm? 16:56:39 64-bit? 16:56:41 32-bit? 16:56:48 anything that's data is stored as a NOP instruction so that the VM won't barf if someone forgets to terminate with a HLT 16:56:54 I forget 16:57:11 hah 16:57:16 I think it's char+int, so 24-bit? 16:57:31 well what about OOP asm? I got no idea how it would look 16:57:34 or 40-bit 16:57:52 hunh 16:57:55 int is probably 32-bit 16:57:56 I dunno, really 16:58:10 yeah, it's probably 40-bit instructions 16:58:12 functional asm? XD 16:58:27 RodgerTheGreat, well anyway I mean for data 16:58:28 actually, that's one of the reasons my ASM is stack-based 16:58:31 what is the data word size 16:58:40 functional asm .. i think that's called lambda calculus 16:58:40 :-P 16:58:41 implementing function calls and returns is very clean and straightforward 16:58:52 tusho, haha! 16:58:57 OOP asm sounds fun, though 16:59:00 think I'll write a vm and try that 16:59:10 tusho, well I got no idea what OOP asm would look like 16:59:13 care to describe it? 16:59:14 data word size in my ASM is the size of an int 16:59:22 AnMaster: i dunno, that's why I'm interested 16:59:29 i'll hack up an example 16:59:30 RodgerTheGreat, so program memory is separate from data memory? 16:59:31 of what I think it'll look like 16:59:36 tusho, yes would love to see it 16:59:36 AnMaster: kinda 16:59:47 they're separate "memory fields" 16:59:48 anyone tried Neko? 16:59:50 http://nekovm.org 17:00:05 it was originally harvard architecture, but it mutated into a mix of harvard and von neumann 17:00:17 RodgerTheGreat, well I would prefer one shared memory bank 17:00:24 neko is kinda crap 17:00:25 :) 17:00:28 suffice to say that you can self-modify but you cannot access instruction fields 17:00:41 tusho: oh? 17:00:48 Judofyr: it's just not that interesting 17:00:52 also the asm is too high level 17:00:57 RodgerTheGreat, hm 17:01:14 well my asm would have a NX bit 17:01:24 haXe is pretty cool (IMO) :P 17:01:39 Judofyr, what about LLVM then? 17:01:49 I wanted to try LLVM for a long time 17:01:53 I've never tried LLVM 17:02:01 I haven't yet got around to it 17:02:03 I'm way to high level for it :/ 17:02:11 I should learn some C 17:02:35 if I made an asm I know what I will name it: 17:02:38 ansember XD 17:02:46 ego +1 17:02:47 ;) 17:02:58 AnMaster: http://nonlogic.org/dump/text/1214150491.html 17:03:01 erally abstract, of course 17:03:02 and trivial 17:03:05 but I guess it'd look kinda similar 17:03:15 CALLMETH is basically CALL, except it takes an instance on the top of the stack 17:03:16 tusho, interesting 17:03:24 i guess you'd have to push 0 17:03:28 to say you're giving it 0 arguments 17:03:30 but whatever 17:03:37 yeah virtual functions and so on 17:03:44 if you implement OO-ASM, there are good odds that it'll look amusingly similar to JVM bytecode 17:03:54 heh 17:03:58 RodgerTheGreat, or MSIL? 17:04:15 RodgerTheGreat: yeah, probably. 17:04:19 JAL 02 true// jump and link 17:04:25 RodgerTheGreat, what does JAL do exactly 17:04:27 i mean, JVM IS oop asm, really :-P 17:04:30 except... 17:04:31 what do you mean with "and link" 17:04:34 AnMaster: like in MIPS- 17:04:35 JVM bytecode has classes in a seperate thingy 17:04:38 instead of 'erasing' them 17:04:39 RodgerTheGreat, I don't know MIPS 17:04:43 you jump to a location and store the return address in a var 17:05:01 as oppsed to a "J", which simply does a GOTO 17:05:19 -!- kar8nga has left (?). 17:05:26 RodgerTheGreat, you mean: call 17:05:27 ? 17:05:41 it's like GOSUB with a one-level stack, and it's your responsibility to maintain the chain of return addresses as necessary 17:05:52 AnMaster: depending on your BASIC interpreter, yes. :) 17:06:00 RodgerTheGreat, I never did basic 17:06:07 I did pascal when I was young instead 17:06:08 ! 17:06:13 not basic 17:06:25 is there a way to use LLVM without touching C? 17:06:41 Judofyr, what do you mean? 17:06:43 Judofyr: yes, use the llvm asm... 17:07:03 well if you can call library functions I guess, so you could do it from C# with some Platform invoke 17:07:07 but why!? 17:07:24 I don't know C :P 17:07:46 Judofyr: LLVM asm is lower level than c 17:07:48 RodgerTheGreat, in your asm definition what does the true and false mean? 17:07:48 you'll have to understand c 17:08:07 better buy some books then... 17:08:09 but not right now 17:08:54 RodgerTheGreat, and: JST 03 true// jump to stack <-- executing code on stack!? 17:08:54 Judofyr: get K&R second edition if you wanna learn c 17:08:54 it's concise as hell and great 17:09:04 AnMaster: 1 and 0 implicitly, but I don't have any instructions that explicitly deal with "true or false" 17:09:09 AnMaster: that's indirection 17:09:26 ah jump to value stored on stack? 17:09:28 right 17:09:34 Ruby has spoiled me :/ 17:09:55 RodgerTheGreat, anyway the true and false in that definition file, sure 1 and 0, but what do they mean? 17:10:00 NOP 00 false// no-op 17:10:00 JMP 01 true// jump absolute 17:10:00 JAL 02 true// jump and link 17:10:07 true and false there 17:10:21 right now, I rather buy The Little Schemer 17:10:25 no, no, no- those are just instruction IDs 17:10:35 RodgerTheGreat, yes 00 false 17:10:37 why that false 17:10:41 or 01 true 17:10:44 why that true 17:10:50 that is what I try to ask you 17:10:50 you don't understand- 17:10:55 indeed! 17:11:00 there are two fields- proga and progb 17:11:06 proga- instructions 17:11:09 ah 17:11:10 progb- parameters 17:11:14 I see 17:11:24 a literal "0" value would probably just be "NOP 0" 17:11:44 although you could overlap it with any instruction that has 0 as a parameter or doesn't use it's parameter 17:11:51 mhm 17:11:59 there are some really nifty things you can do to optimize for space in this language 17:12:36 public boolean oparam[];// does this command take parameters? 17:12:38 aha 17:12:48 so that false means "takes no parameters" 17:12:49 right 17:12:54 why didn't you just say that! 17:12:55 yup 17:13:07 I didn't understand the question 17:13:07 AnMaster: he thought you meant 17:13:11 'what do true and false actually MEAN' 17:13:12 you meant 17:13:19 'in this case, what does the argument of true/false mean to the opcode?' 17:13:23 yes 17:13:34 if you'd said you were talking about the language definition file I could've answered easily 17:13:46 RodgerTheGreat, I did copy and paste from that file 17:13:49 RodgerTheGreat, anyway the true and false in that definition file, sure 1 and 0, but what do they mean? 17:13:54 said "definition file" 17:13:56 :/ 17:14:02 oh well 17:14:11 I must 17:14:17 've missed that part 17:14:28 * AnMaster is writing up some ideas for his asm 17:14:38 it will be register based 17:14:53 also that syscall thing hrrm 17:15:48 the active stack/ passive stack concept is one of my favorite aspects of my ASM- it provides a means to allow expressions in RPN pretty raw translation into ASM while avoiding accidental stack-smashing 17:16:30 syscalls are a good way to define all your I/O, because in a real assembly language it wouldn't make sense to have those operations be part of the instruction set 17:19:00 o 17:19:07 *i'm gonna let the OS provide syscall monikers 17:19:13 so you can do 'SYSCALL putchar' 17:19:14 or whatever 17:19:28 it'd make them sweeter 17:19:30 sounds good 17:19:37 oh, and mine will be stack based 17:19:43 and have a kind of fuzzy everything-is-everywhere stack 17:19:48 so the ASM would just have some kind of hooking mechanism? 17:19:49 well, two stacks of course 17:19:52 hmm 17:19:57 or i could just divide a stack in two... 17:20:03 that'd be closer to the machine 17:20:14 tusho: that's generally how it works- start at both ends and grow towards the center 17:20:14 RodgerTheGreat: pretty much, you'd provide implementations of syscalls and names for them 17:20:17 like built-in functions, really 17:20:25 i could make them functions but that'd be bad for performance 17:20:31 so no call stack will be involved 17:20:46 (i.e. they'll be goto'd and given an address to goto back, and if they want a stack they'd better handle it themselves) 17:21:07 very MIPS-esque 17:24:44 tusho: here's that image you wanted, btw: http://nonlogic.org/dump/images/1203125875-tetsuoooo.png 17:25:11 yes, pretend I pasted that link ages ago :-P 17:25:31 lol 17:35:14 * tusho writes some asm and then makes it work 17:35:17 best way to develop software ever 17:35:39 LDC 0 17:35:42 (Load Constant 0) 17:37:33 RodgerTheGreat: think I should have less-than-or-equal-to? 17:37:39 it's common enough for another instruction, i'd say 17:37:44 instead of manually or'ing it 17:45:32 RodgerTheGreat, hm I got something written up here. not complete: http://rafb.net/p/dovpGA97.html 17:46:01 very early draft of instruction set 17:46:08 a lot left to be done 17:48:12 * AnMaster take the name LDC for his load constant instruction 17:55:11 AnMaster: I AM SUING YOU FOR COPYRIGHT INFRINGEMENT 17:55:13 IN A COURT OF LAW 17:55:15 >:| 17:55:18 hah 17:55:19 ... :p 17:55:39 mine will have a syntax that is a mix of AT&T and Intel 17:55:49 just to make *everyone* get a headache! 17:55:58 tusho, ;P 17:56:04 AnMaster: oh dear 17:56:09 now I want to make you feel pain 17:56:12 that was not a clever thing to say ;) 17:56:17 i mean 17:56:17 why? 17:56:21 are you going to swap them each instruction or something 17:56:23 because aaagh 17:56:25 no no 17:56:27 they're bad enough seperately as it is 17:57:06 I mean some parts with be done as in gas (like the prefix for register names), while other will be done as in intel (not yet decided) 18:04:29 http://rafb.net/p/pFtjP117.html 18:30:27 RodgerTheGreat, tusho: http://rafb.net/p/MYYzRr37.html 18:30:30 what do you think so far? 18:30:38 AnMaster: it looks good 18:30:42 ID is a bit odd though 18:30:48 don't think it's needed 18:30:52 hm maybe 18:31:00 AnMaster: also, you'll wanna trim that down a bit 18:31:06 future compatibility (why do I bother) 18:31:09 it's verging into CISC far too much ;) 18:31:18 also, i have never seen a future compatible cpu arch 18:31:19 :-P 18:31:20 tusho, hm I did leave out FTAN as it can be done with FSIN and FCOS 18:31:30 AnMaster: there are RISCs with 32 instructions 18:31:37 tusho, I know 18:31:39 I coded for one 18:31:45 it lacked divide or multiply 18:31:49 yeah, just saying that you might wanna minimalise ;) 18:31:51 PIC 12F629 18:31:52 .. 18:31:56 e.g. NEG is pretty pointless 18:31:58 you can just do 0 - 18:31:59 painful to work with 18:32:09 tusho, hm true, maybe for speed reasons? 18:32:24 AnMaster: can't think why it'd be much faster 18:32:24 :-P 18:32:32 true 18:32:37 AnMaster: can't you do it with a XOR 18:32:39 or something 18:32:42 two's complement 18:32:52 well two's complement is what I plan for 18:33:01 AnMaster: two's complement: 18:33:02 as to begin with I will write interpreter in C 18:33:06 NEG = (~x)+1 18:33:09 ~ is bitwise not 18:33:14 or, NEG = 0-x 18:33:17 former is likely quicker 18:33:18 it's: 18:33:22 BITWISENOT; INC 18:33:23 I do lack bitwise NOT it seems 18:33:26 * AnMaster adds 18:33:34 yeah, replace neg with BNT 18:33:42 then {BNT,INC} is NEG 18:33:46 and a darn fast neg at that 18:34:10 BNOT maybe 18:34:22 or BNT if you wish 18:34:34 AnMaster: i'd keep to 3-char mnemonics 18:34:35 :-P 18:34:40 tusho, I can't do that everywhere 18:34:42 I'd personally call it NOT, boolean not is lame 18:35:02 true 18:35:14 AnMaster: also, boolean not is: 18:35:20 all of NOT/XOR/OR/AND should be bitwise 18:35:23 and not boolean 18:35:24 yeah 18:35:27 in the instruction set 18:35:34 agreed 18:35:43 boolean versions can be built trivially from it 18:35:51 OMG HOW DO I MAKE THE "OR" instruction 3 chars long?! 18:35:53 * AnMaster runs 18:35:59 AnMaster: hehe 18:36:01 BOR 18:36:02 duh ;) 18:36:08 well I dropped B prefix 18:36:10 yes 18:36:11 :P 18:36:13 anyway FADD is longer 18:36:19 for floating point 18:36:25 AnMaster: suggestion - FTRUNC -> FTNC 18:36:37 FSQRT -> FSQT 18:36:39 hm 18:36:51 what about the other long ones? 18:36:59 AnMaster: FFLOOR -> FFLR, probably 18:37:07 FCEIL? 18:37:09 FCEIL -> not sure 18:37:11 k 18:37:15 though really 18:37:18 it's okay as it is 18:37:22 PUSH -> PSH? 18:37:31 isn't PUSH LDC? 18:37:40 no PUSH is from stack 18:37:41 oh, right 18:37:43 to register 18:37:44 just leave PUSH as it is :-P 18:37:46 really, just leave em as is 18:37:48 it's fine 18:37:48 why not PSH? 18:37:54 PSH isn't mnemonic 18:37:58 oh? 18:38:04 what do you mean with that? 18:38:05 AnMaster: okay, okay, fine, I was wrong when I said 3 chars 18:38:07 just leave it as it is :-P 18:38:10 haha 18:38:11 anyway PUSH is better because it's a real word 18:38:14 true 18:38:20 PSH could be Poppy Shaver Hair 18:38:25 what about: SUB -> SUBSTRACT then? 18:38:30 * AnMaster runs 18:38:32 because SUB is widely understood :-P 18:38:39 SUBroutine? 18:38:43 SUBmarine!? 18:38:47 heh 18:38:54 perl uses 'sub' for functions 18:39:03 We All live in a yellow SUB 18:39:03 We All live in a yellow SUB 18:39:04 ! 18:39:07 hahh 18:39:15 AnMaster: you can do crazy things with perl function prototypes: 18:39:21 sub L(\&) { shift } 18:39:27 well you can do crazy things in perl I know... 18:39:29 L { $_[0] + $_[1] } <-- a closure lambda thingy 18:39:38 AnMaster: explanation - the prototypes can change how the arguments are influenced, 18:39:43 perl doesn't require parens around function calls, 18:39:48 and \X means 'reference to something of X' 18:39:48 hm ok 18:39:53 e.g. \@ is a listref 18:39:57 \% a hashref 18:40:00 and, & means 'subroutine' 18:40:06 well I know perl is mad and I don't know perl apart from a very basic level 18:40:11 so: sub L(\&) is saying that the argument is a subroutine reference 18:40:16 hah 18:40:18 thus, if we pass in a block of code, it gets returned as a reference 18:40:22 and we have a function creator 18:40:28 I see 18:40:29 sub sub(\&) { shift } 18:40:30 xD 18:40:39 (though you couldn't do that, obviously, because sub is a keyword) 18:40:46 was just about to ask about that 18:40:47 (and even if you did the resulting 'sub' wouldn't be able to do the prototypes itself, ironically) 18:40:56 haha 18:41:02 why "shift" 18:41:08 shift a parameter? 18:41:11 but why 18:41:21 AnMaster: well, we want L to return the lambda it gets 18:41:24 and, in perl 18:41:29 functions arguments are put in the array @_ 18:41:32 oh I think I see.. 18:41:35 'shift' shifts a value of the top of an array 18:41:38 if no array is given, it assumes @_ 18:41:39 kind of like bash there 18:41:43 so for one param functions, you do: 18:41:43 alright I'm back 18:41:46 my $foo = shift; 18:41:48 however no "return" statement? 18:41:49 for multi params: 18:41:53 my ($foo, $bar, $baz) = @_; 18:42:02 AnMaster: the last expression is implicitly returned... kinda like a functional language 18:42:08 k 18:42:09 it's crazy how perl has convenient closures and all that 18:42:12 http://rafb.net/p/sAtIyw42.html 18:42:22 AnMaster: RDB seems a bit silly 18:42:24 does any arch do it like that? 18:42:27 RDB? 18:42:27 i mean, imagine c 18:42:29 * AnMaster looks 18:42:33 if you have 'double' and 'float' 18:42:34 in the same program 18:42:39 it'll be flipping each time you use them' 18:42:40 ah 18:42:51 tusho, well you got a better idea 18:42:51 also, R8/16/64 is a bit silly 18:42:56 machines only ever have N-bit 18:43:00 for R8 and such 18:43:03 amd64 does it like that 18:43:06 the REX prefix 18:43:09 to mean 64-bit 18:43:11 AnMaster: amd64 is crazy, though 18:43:17 because it has to deal with backwards compat to an insane degree 18:43:18 you don't 18:43:32 but 64-bit always is just a waste! 18:43:40 AnMaster: make it 32-bit then 18:43:40 so what do you suggest? different ADD instructions? 18:43:42 it's never hurt anyone ;) 18:43:49 tusho, I want the *ability* to use 64-bit 18:44:01 AnMaster: then you'll be stuck with bloat or always using 64 bit.. 18:44:05 i'd just use 32-bit 18:44:07 hm 18:44:11 it'll be fine for this :-P 18:44:14 * AnMaster ponders 18:44:23 and... 18:44:27 what about 128-bit!? 18:44:31 -!- Corun has quit ("This computer has gone to sleep"). 18:44:34 AnMaster: well exactly 18:44:35 :-P 18:44:37 ;P 18:44:40 you could support 349856794573489573495-bit all the time 18:44:47 but 32-bit is probably best for this 18:44:55 you can do just about anything, and it's simple enough to code with neatly manually in 18:44:58 349856794573489573495 == how many GB? 18:45:18 beats me 18:45:22 A Lot 18:45:31 or "how many " 18:45:38 'You only have Some GB left of your A Lot GB hard-drive! Please delete some files.' 18:45:52 heh? something actually said that? 18:45:57 no :P 18:46:23 349856794573489573495 / 8 = 43732099321686196686 bytes 18:46:32 42707128243834176 kb 18:46:45 41706179925619 MB 18:46:48 make these suckers 8-bit- it'd be way more fun. Anybody can do 32 bit 18:46:55 40728691333 GB 18:46:58 RodgerTheGreat: AnMaster would never sacrifice that much 18:46:59 ;) 18:47:04 (why is bc rounding like that!) 18:47:15 39774112 TB? 18:47:18 not sure 18:47:29 38841 petabyte or? 18:47:31 what is next 18:47:36 anyway bc rounded crazily 18:47:47 "a shitload" anyway 18:48:00 1 shitlytes = 43732099321686196686 bytes 18:48:07 hahaha 18:48:18 shitbytes not shitlytes right? 18:48:26 AnMaster: i morphed shitload into shitlytes 18:48:33 lytes? 18:48:52 -!- augur has quit (Read error: 104 (Connection reset by peer)). 18:49:00 1024-bit? would be 128-byte 18:49:09 -!- augur has joined. 18:49:18 hi augur 18:49:26 tusho, anyway I can se a reason for 128-bit computers 18:49:32 makes it simpler to work with ipv6 18:49:33 :D 18:49:46 AnMaster: aieee 18:49:47 :p 18:50:04 a 32-bit computer can just do one fourth of an ipv6 url in a register 18:50:09 a 64-bit computer: one half 18:50:27 anyway why not go trinary!= 18:50:28 !? 18:50:40 AnMaster: base 256 computer! 18:50:45 um 18:50:48 intersting 18:50:55 AnMaster: strings are trivial 18:50:56 ;) 18:51:03 not really 18:51:05 unicode 18:51:06 :P 18:51:11 unicode is for hippies 18:51:13 and foreigners 18:51:20 i see no reason to accomadate THOSE types. 18:51:25 ööööööööööööååååååååååääääääääääääääää 18:51:26 *accommodate 18:51:32 AnMaster: DIRTY FORNER 18:51:50 tusho, SÃ¥ du pratar bara engelska? 18:51:59 (So you only speak English?) 18:52:13 shush, I was being sarcastic 18:52:17 haha 18:52:17 tusho: those characters are in high-order ascii, fool 18:52:25 RodgerTheGreat: he's still a DIRTY FORNER. 18:52:27 RodgerTheGreat, depends 18:52:33 RodgerTheGreat, I sent them as utf8 18:52:34 -!- timotiis has quit (Connection timed out). 18:52:34 :P 18:52:47 oh, and I know a little bit of lojban, thank YOU :P 18:52:56 hm lojban 18:53:02 what is that one now again? 18:53:10 -!- Corun has joined. 18:53:11 mi.e .Eli,at.xrd. 18:53:12 i think 18:53:16 oh 18:53:16 mi'e 18:53:19 mi'e .Eli,at.xrd. 18:53:21 wtf? 18:53:25 this is perl? 18:53:29 AnMaster: Lojban can't pronounce my name properly. :-P 18:53:35 .Eli,at.xrd. approximates it 18:53:37 /)=(/!? 18:53:48 AnMaster: dude, we're talking about lojban the human language here 18:53:48 tusho, this is a constructed language? 18:53:52 yes.. 18:53:56 ah explains it 18:54:04 the most popular geeky one nowadays 18:54:10 (i.e. apart from esparanto & etc) 18:54:16 *esperanto 18:54:37 btw I think my asm shall have 128 general purpose registers (+ some other like program counter and such) 18:54:49 128?!?!?!?!?!?!?!!? 18:54:51 jesus christ 18:54:55 you'll never be able to keep track of that 18:54:56 well maybe 64 then? 18:54:58 ppc got 64 18:55:01 how about 10 18:55:03 :| 18:55:07 tusho, PPC got 64 18:55:12 AnMaster: ppc is pretty crazy as is 18:55:17 oh? 18:55:19 10 is about as much as you could keep in your head, i imagine 18:55:25 as long as you give them decent names 18:55:26 maybe I'll do like sparc then? 18:55:33 have a moving register window? 18:55:40 heh 18:55:44 you know about it? 18:55:45 i'd just use 10 registers with nice names 18:55:46 it's a nice number 18:56:06 um. I'd use %r1, %r2 and so on 18:56:17 yeah, that's not good ;) 18:56:22 why names? 18:56:23 10 _well-named_ ones will make programming abreeze 18:56:25 *a breeze 18:56:28 %elliot 18:56:33 %roger 18:56:35 %dave 18:56:37 wtf? 18:56:38 AnMaster: 'oh, I need to use %r4 to %r7 the %r3' 18:56:39 that would be silly! 18:56:52 and I assume you were joking there 18:56:56 tusho, yes of course 18:56:59 I tried real names 18:57:02 as a joke 18:57:07 yes 18:57:15 but a lot of registers are good 18:57:26 not if you wanna code in it 18:57:27 maybe I'll write a compiler to this bytecode later 18:57:37 tusho, why would I need to use them all? 18:57:44 you won't 18:57:47 but 10 should be _enough_ 18:57:55 tusho, yet x86 is register starved 18:58:04 amd64 got 16 general purpose registers iirc 18:58:06 -!- bsmntbombdood has joined. 18:58:26 tusho, how would you name your registers? 18:58:32 tusho: Have you ever done any serious coding in a RISC assembly language? 18:58:41 RodgerTheGreat: define serious 18:58:54 anyway AnMaster's instruction set is pretty big 18:59:10 I coded reversi in MIPS- something like 3000 lines of assembly- and I needed every register I had. 18:59:14 tusho, remove the optional floating point co-processor and it is small! 18:59:20 :) 18:59:27 I could've done it with about 3, but it would suck, and it would've been easier with more 18:59:28 AnMaster: but read his instruction set 18:59:32 10 should be enough 18:59:52 well it isn't complete 19:00:00 anyway have you see the amd64 instruction set? 19:00:09 all the PAGES of instructions 19:00:15 I got a pdf somewhere with it 19:00:22 yes, well it's ReallyCISC 19:00:26 IBISC 19:00:26 indeed 19:00:30 IBISC? 19:00:30 insanely big instruction set computer 19:00:34 ah 19:00:43 AnMaster: you're missing some important stuff and I think the floating-point stuff is a waste, especially this early in the design phase 19:00:43 tusho, what about VLIW? 19:01:02 RodgerTheGreat, well the floating point co-processor is sold separately! 19:01:02 ;P 19:01:11 RodgerTheGreat, and what important things? 19:01:20 setting stack base? that will be the st0 register 19:01:28 and stack top will be another register 19:01:35 RodgerTheGreat, or? 19:02:00 RodgerTheGreat, and yes I need something for heap 19:02:04 it's pretty amusing that you have a language wherein the only real storage you have access to is the stack and you can't roll, swap or easily duplicate stack entries 19:02:07 as in "write to pointer" 19:02:16 it is not complete indeed 19:02:31 what is with you people and heaps? you shouldn't implement heaps at the CPU level 19:02:39 RodgerTheGreat: it's pretty amusing that you have a language wherein the only real storage you have access to is the stack and you can't roll, swap or easily duplicate stack entries 19:02:43 registers... 19:02:49 STORAGE. 19:02:54 lw, sw 19:03:03 RodgerTheGreat: i don't know why you're getting so heated about it 19:03:06 it's a good start 19:03:12 it isn't complete 19:03:15 and it is my first try 19:03:24 I'm not flaming, I'm saying he's growing it in the wrong directions 19:03:31 RodgerTheGreat, so you mean I should simulate a MMU?! 19:03:35 separately? 19:03:39 * AnMaster is confused 19:03:57 I'm saying you should support atomic operations like storing to and loading from an arbitrary memory location 19:04:04 * AnMaster ponders adding a MALLOC instruction just to irritate, (just kidding) 19:04:08 RodgerTheGreat, indeed! 19:04:12 I will add that now 19:05:14 and as I said, your stack is crippled in usefulness because you can only touch the top element 19:05:23 MOV ; Copy one value 19:05:23 ; from a register or from memory 19:05:23 ; to a register or to memory 19:05:25 what about that? 19:05:36 RodgerTheGreat, and no you can touch below 19:05:42 those should really be separate instructions 19:06:10 RodgerTheGreat, because you can get stack base from the "special purpose" register st0 or something like that, and stack top from st1 19:06:14 well something like that 19:07:41 there's a difference between "is possible" and "is practical"- it would take 4 or 5 instructions to recall an arbitrary depth from your stack the way the instruction set works now 19:07:47 what about this: 19:07:48 MOVRR ; Copy one value from a register to another. 19:07:48 MOVMR ; Copy one value from the main memory to a register. 19:07:48 MOVRM ; Copy one value from a register to the main memory. 19:07:48 MOVMM ; Copy one value within the main memory. 19:08:11 RodgerTheGreat, and well I will have 128 general purpose registers. ;P 19:08:17 or maybe 64 19:08:20 anyway "enough" 19:09:00 it also doesn't make a lot of sense to be able to move values directly between memory locations- that would be an insanely slow operation in real life and it defeats the purpose of having registers in the first place 19:09:08 AnMaster: or 10 19:09:09 hm 19:09:09 :P 19:09:38 ok, just to irritate you all I will add a compare-and-exchange atomic instruction 19:09:40 -!- kar8nga has joined. 19:09:44 not that I will add SMP for quite a while 19:09:45 ;P 19:09:50 (if ever) 19:10:34 also MOV itself could be asm side, it will select what MOV variable is the correct one to use 19:10:40 based on if it looks like: 19:10:49 MOV %r1,%4 19:10:50 or 19:10:57 MOV %r1,0x3473 19:11:05 (or whatever) 19:11:14 then that's a pseudo-op, not a true operation 19:11:19 indeed 19:11:24 damn useful still 19:11:36 defining pseudo-ops is another step entirely from designing the assembly language 19:12:08 indeed 19:12:12 -!- kar8nga has left (?). 19:12:16 ; * To get double precision change the prefix F to FD. 19:12:21 what about that variation? 19:12:24 tusho, ^ 19:12:35 change the instruction name for double 19:12:41 AnMaster: probably, yes 19:12:42 but 19:12:46 but? 19:12:47 think of how many bits you need to use for an instruction 19:12:49 :-P 19:12:56 tusho, VLIW? 19:12:57 ;P 19:13:06 heh 19:13:08 (Very Long Instruction Word) 19:13:15 AnMaster: you could do something like 19:13:33 hm, no 19:13:36 tusho, yes? food is ready. will read when I get back in a few minutes 19:13:37 cya 19:13:48 bye 19:13:49 :) 19:31:58 back 19:32:06 anyway I will add swap/dup for stack 19:32:37 good idea 19:32:44 AnMaster: also why not 'dip' 19:32:47 dip? 19:32:47 you can do it non-functionally: 19:32:54 dip = take the top element off the stack 19:32:55 and then 19:32:57 undip = put it back 19:33:02 so e.g. 19:33:07 to remove the second element on the stack: 19:33:09 that's push and pop aren't they? 19:33:09 dip pop undip 19:33:15 AnMaster: well, kinda 19:33:20 AnMaster: you can nest 19:33:28 dip dip pop undip pop undip 19:33:29 I was just going to mention another idea: reverse instruction pointer direction 19:33:32 remove second and third elements of the stack 19:33:33 totally useless! 19:33:52 (as this isn't befunge) 19:33:59 drip! 19:34:07 AnMaster: dip dip pop undip pop undip 19:34:08 see how that works? 19:34:13 very useful 19:34:19 you can build a LOT of stack operations on top of dip/undip 19:35:16 hm 19:35:22 what about peek? 19:35:42 Also I solved 64-bit issues 19:35:44 issue* 19:36:02 AnMaster: i like dip/undip, a lot 19:36:03 e.g. 19:36:09 tusho, for each instruction that can take a 32-bit value there is a instruction with the same name but the suffix: 64 19:36:11 a b c TOP -> b a c TOP 19:36:12 can be 19:36:16 dip swap undip 19:36:31 tusho, so where does dip/undip put the values? 19:36:39 in another stack? 19:36:42 mirrored one? 19:36:49 AnMaster: yeah, probably 19:36:59 so pop and push on other 19:37:03 -!- Corun has quit ("This computer has gone to sleep"). 19:37:08 hrrm 19:37:15 -!- oerjan has joined. 19:37:38 tusho, what about my "64" suffix idea? 19:37:46 AnMaster: you should pick one ;) 19:37:52 just do 32-bit, sheesh :P 19:38:00 ADD1024? 19:38:02 * AnMaster runs 19:39:38 Little endian? 19:39:42 Big endian? 19:39:47 what do you suggest tusho? 19:40:03 AnMaster: confused endian 19:40:10 tusho, !? 19:40:17 those are just crazy 19:40:20 MOST IMPORTANT LEAST IMPORTANT ... SECONDLEAST IMPORTANT SECONDMOST IMPORTANT 19:40:21 (etc) 19:40:29 tusho, those exist iirc? 19:40:36 do they 19:40:37 wow 19:40:46 well the perl configure did check for it 19:41:01 iirc 19:41:06 AnMaster: what, confused endien? 19:41:07 *endian 19:41:10 yes 19:41:25 AnMaster: just wow 19:41:29 well, do it 19:41:31 it said something like "checking your endianness" 19:41:32 it's esoteric, certainly 19:41:36 oh 19:41:37 AnMaster: duh 19:41:40 and then saying "if output is blah" then big endian 19:41:44 yes... 19:41:46 if foo little edian 19:41:56 if different you use mixed endian 19:41:58 or something like tha 19:41:59 that* 19:42:02 AnMaster: ok, but I don't think it's mine 19:42:09 i mean, let's say 19:42:11 1-5 19:42:15 5 is most important (largest) 19:42:16 1 is least 19:42:17 mine goes like this: 19:42:18 -!- ihope___ has joined. 19:42:20 right 19:42:28 13542 19:42:32 -!- ihope___ has changed nick to ihope. 19:42:33 this was for 4132 iirc 19:42:37 or something like that 19:42:44 AnMaster: well, mine is crazier 19:42:45 :P 19:42:51 agreed 19:43:02 http://en.wikipedia.org/wiki/Endianness#Middle-endian 19:43:03 tusho, ^ 19:43:13 1473625. 19:43:23 AnMaster: well, that's not mine 19:43:26 mine is totally confusing 19:43:34 tusho, agreed, but it is still "unusual" 19:43:47 and I'm going for little endian then? 19:43:57 AnMaster: well 19:44:00 do big endian 19:44:01 for no real reason 19:44:14 tusho, little is simpler on x86_64 19:44:14 ;O 19:44:16 ;P* 19:44:23 yes, on x86_64 19:44:24 :-P 19:44:32 but I need to check at compile time of interpreter I guess for endianness 19:44:35 and have some macro? 19:44:55 AnMaster: no way 19:44:56 :-P 19:44:58 tusho, look network byte order is big endian 19:45:05 right then 19:45:11 AnMaster: your machine is 'internet ready' 19:45:13 so that means a slowdown on little endian systems? 19:45:14 if you do big endian 19:45:17 ;) 19:45:19 agree? 19:45:29 yeah 19:45:30 do you like slow? 19:45:33 I've used ARM's "feature" of strange rotations on misaligned full-word writes (mentioned in that Wikipedia section) once when writing assembly for the Nintendo DS. (Well, tried to use; the emulator I used actually did it wrong.) 19:45:39 thus it is only fair that the little endian systems gain a bit of speed elsewhere! 19:45:39 i was the one who suggested big endian 19:45:41 tusho, ^ 19:45:46 AnMaster: heh 19:45:51 fizzie: you know, you are the best contributor to #esoteric. :-P 19:46:10 fizzie, but why? 19:47:07 I've forgotten the specifics. I think it was in thumb mode, so actually doing the corresponding rotation would have meant one more instruction. 19:47:19 um 19:47:24 assume I don't know ARM? 19:47:34 fizzie, what is thumb mode 19:47:52 Thumb mode is the one where the opcodes are 16-bit, instead of the 32-bit "ARM mode". 19:47:58 oh no 19:48:07 a real world example of it 19:48:08 :( 19:48:10 I see 19:48:13 tusho, of what? 19:48:18 AnMaster: of the thing you were doing 19:48:19 ;) 19:48:21 (R8, etc) 19:48:29 tusho, well amd64 already have it 19:48:47 and I dropped it for suffixes after what you said! 19:49:27 tusho, anyway I will soon need a 64-bit value for the opcode itself ;) 19:49:29 j/k 19:49:33 :) 19:49:51 -!- augur_ has joined. 19:49:55 I think I will use 16 bits for the opcode, for future compatiblity 19:50:05 AnMaster: j/k, right? 19:50:06 please? 19:50:16 why? 19:50:20 tusho: hey 19:50:21 sup 19:50:21 16 bits is huge 19:50:25 executables will be insanely huge 19:50:29 what will you do/say if I say 1) yes 2) no 19:50:29 not much augur_ 19:50:34 tusho, ^ 19:50:37 afk phpne 19:50:39 phone* 19:50:39 1) yes - 'phew' 19:50:47 2) no - i will kill you as you sleep 19:50:48 ;) 19:51:00 -!- augur_ has changed nick to psygnisfive. 19:54:28 Use 16 bits for opcodes, but then make all executables compressed? 19:54:33 With very lightweight compression such as Huffman coding or something. 19:55:10 heh 19:55:39 back 19:55:47 tusho, ok what about 10 bits? 19:55:55 AnMaster: that won't fit nicely 19:56:04 tusho, 8 bits won't be enough 19:56:17 If 90% of your code consists of one opcode, that one opcode can be 0 and the rest can start with 1. 19:56:28 ihope, um? 19:56:36 you mean... variable width!? 19:56:39 Yep. 19:56:50 interesting 19:56:53 What are you designing, anyway? 19:57:09 ihope, an assembly language + byte coder interpreter 19:58:18 anyway what about 8 bits by default, unless the the value is 255, then see next 16 bits for more details? 19:58:21 or something like that 19:58:29 I will need variable width for arguments anyway 19:58:29 -!- augur has quit (Connection timed out). 19:59:51 So 255 of the opcodes are xxxxxxxx minus a small fraction of a bit, 65536 of them are 11111111xxxxxxxxxxxxxxxx. 20:00:34 Do you think that 255/256 of the opcodes in a file will be eight-bit opcodes? 20:01:55 More reasonable, I think: there are 240 8-bit opcodes, which are xxxxxxxx where the first four bits are not all 1, and 65536 16-bit opcodes, which are 1111xxxxxxxxxxxxxxxx. 20:02:06 hm ok 20:02:19 ihope, for now I don't have that many instructions 20:02:22 You lose 15 possible 8-bit opcodes, but then the 16-bit opcodes are four bits smaller. 20:02:25 I just want it future proof 20:02:33 ihope, and yes that sounds good 20:02:59 Maybe the 16-bit opcodes can be 1111xxxxxxxxxxxx, even, only 12 bits of actual opcode data, but still quite a bit. 20:03:13 yes 20:03:15 good idea 20:07:36 -!- sebbu2 has joined. 20:09:36 ihope, should the program counter register be read only? 20:09:42 no 20:09:42 no way 20:09:46 I don't see why. 20:10:06 well only way to change would be JMP and such really, wouldn't it? 20:10:32 Now you can use a SET (or LOAD or whatever) instead of a JMP and perhaps save... something. 20:10:43 um maybe 20:10:55 also we need to support PIC code don't we? 20:11:25 no 20:11:35 why not? 20:11:45 What is that? 20:11:58 Position Independent code 20:12:09 used in *.so on linux for example 20:12:21 to avoid TEXTRELOC 20:12:43 in fact most arches except x86 *need* PIC in *.so 20:14:52 tusho, ihope: How much ram (and if "decided at runtime": how to let program find out?) 20:15:01 AnMaster: you are bikeshedding a bit 20:15:19 tusho, yes PIC was a joke... 20:15:21 duh 20:15:32 tusho, but how much ram? 20:15:51 Decided at runtime. 20:15:51 AnMaster: decided at runtime, and don't let the program find out 20:15:56 hm 20:15:57 it never needs to, really 20:16:01 i don't know of any arch that can do that 20:16:07 maybe x86_64, which can make you toast 20:16:08 tusho, um 20:16:10 free -m 20:16:15 ?????? 20:16:20 AnMaster: oh, not sure how that works 20:16:22 Magick, I believe 20:16:23 anyway 20:16:28 try and access high memory addresses 20:16:32 the first segfault is your limit ;) 20:16:38 joking, joking 20:16:57 well I vote for ID instruction 20:17:18 lets say: at least x kb but additional can be available: check with ID instruction? 20:17:38 lets maybe that 640 kb XD 20:20:16 AnMaster: i don't vote 20:20:18 :P 20:20:37 actually, lets make it a special purpose register 20:20:45 or maybe not 20:20:48 it doesn't need to be 20:21:25 only special purpose registers that are needed are stack base/top, program counter and exception table 20:21:27 really 20:21:39 exception table is a jump table for exceptions 20:22:56 tusho, anyway I need a way to be able to write to a single byte in the memory or read from one 20:23:06 so MOV* will have 8 suffixes variants too 20:23:10 nothing else will 20:23:50 -!- sebbu has quit (Read error: 110 (Connection timed out)). 20:42:14 -!- sebbu2 has quit (Read error: 104 (Connection reset by peer)). 20:50:39 -!- timotiis has joined. 20:53:33 20:35… × AnMaster runs <<< you would probably be a very weird guy to have an irl conversation with. 20:53:47 oklopol, hah 20:54:14 heh 21:02:00 +---------------+---------------+-------------------------------+----- 21:02:00 | 16 bits | 16 bits | 32 bits | ... 21:02:00 +---------------+---------------+-------------------------------+----- 21:02:00 | Magic word | Size of table | First Pointer | ... 21:02:00 +---------------+---------------+-------------------------------+----- 21:02:14 YAY I ALWAYS WANTED SUCH A DIAGRAM! 21:02:15 ;P 21:02:27 (yes really, I always wanted a bit diagram) 21:02:33 tusho, ^ 21:03:04 !! 21:03:15 !!!!!!!!1 21:03:35 tusho, anyway this is the page table 21:03:36 no 21:03:38 -!- Corun has joined. 21:03:39 just kidding 21:03:45 it is the exception table 21:03:52 where the program jumps on errors 21:04:09 like: invalid opcode, invalid address, invalid 21:05:27 -!- sebbu has joined. 21:09:28 Hmm. More people should use #pfft. :P 21:11:30 -!- calamari has joined. 21:14:57 so cool 21:15:31 -!- kar8nga has joined. 21:15:41 oklopol: so cool that oklopol won't grace its prescence 21:18:46 -!- Corun has quit ("This computer has gone to sleep"). 21:21:00 yo 21:21:59 tusho, what was that last highlight about? 21:22:05 closed tab at the same moment 21:22:06 what 21:22:10 so didn't see it 21:22:14 tusho: AnMaster: basically, keeping #esoteric about esolangs. 21:22:14 in the other channell, 21:22:17 ah 21:22:21 agree 21:22:23 it isn't actually about gay sex, I was making a joke 21:22:26 you know, these weird things 21:22:35 well I don't have time for off topic chat 21:22:51 AnMaster: you're much too busy making pointless things? :-P 21:23:26 tusho, yeah :P 21:23:50 tusho, and falling asleep atm 21:25:12 -!- kar8nga has left (?). 21:26:38 -!- timotiis_ has joined. 21:35:38 # I wanna limo at the airport / and one at the hotel ' 21:35:56 # A limo for my minder / and my analist as well # 21:36:10 # A limo for my make-up girl / a limo for my dog # 21:36:25 # A limo parked beside the bed / to drive me to the bog. # 21:37:17 -!- timotiis has quit (Read error: 113 (No route to host)). 21:37:39 oops, maybe I repelled him 21:37:53 -!- Corun has joined. 21:37:56 oops, no, different version 21:43:00 -!- timotiis_ has changed nick to timotiis. 21:43:09 A limo? you richy rich 21:43:31 Slereah_, agree 21:44:01 i'm richer than all of you put together 21:44:07 well not really, but you know. 21:44:26 Even ais and his Turing money? :o 21:44:31 What did he do with it? 21:44:42 in the sense of not meaning anything by that, yes. 21:51:22 Slereah_: I thought it was the Wolfram prize? 21:51:44 From a Turing machine, though 21:51:56 It's like blood money, made from blood 21:53:53 ah, ok 21:56:10 how finely can one draw the line between executable regions and writable regions on the x86? 21:56:26 I don't even know what that means, I can't help you much 22:09:31 about 7000 nanometers. hope this helps. 22:11:05 7000 nanometers is a silly unit 22:11:12 7 µm is shorter 22:11:34 no it isn't. it's exactly the same length. 22:11:45 I mean, on a byte level or on a page level? 22:12:03 or to some other degree of granularity? 22:12:14 So is 7.39916387 × 10^-22 light years 22:12:20 That doesn't make it less silly 22:12:54 'cause it might be nice to be able to write a Forth where every word was non-executable unti lit was finished, whereupon it became executable but not writable. 22:17:30 I think x86-64 does it on a per-page granularity; while old x86 only has a per-segmet-descriptor memory protection bit, which doesn't really help any. 22:18:24 At least that's what I remeber from the explanations of OpenBSD's "W^X" security feature and why it only works on more sensible hardware. 22:19:11 Wikipedia article of "NX bit" is probably friendly. 22:25:12 -!- Corun has quit ("This computer has gone to sleep"). 22:29:37 Slereah_: Presumably he spent it on university. 22:29:45 That seems an aisy thing to do. 22:37:53 -!- Slereah2 has joined. 22:37:53 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)). 22:37:58 University? 22:38:13 How expensive is British university? 22:39:04 Here, you could get like 500 years of inscription for it for 25.000 euros 22:39:14 50* 22:42:51 hmm 22:43:02 depends on how rich you are 22:43:21 you get extra cash/loans if you are "poor" 22:43:28 -!- Corun has joined. 22:44:16 I'm glad to be in this socialist dictatorship. 22:44:48 dictatorship? 22:44:57 ais would spend it on uni anyway 22:45:00 It's an hyperboly. 22:45:04 :-P 22:45:55 ruling is simple: 22:46:11 you just figure out the complete set of moral values, then follow them 22:47:03 *g* 22:47:27 -!- Corun has changed nick to TheFlash. 22:47:32 -!- TheFlash has changed nick to Corun. 22:47:59 The Flash? 22:48:07 Is your pwoer exhibitionism? 22:51:39 -!- ihope has quit (Read error: 60 (Operation timed out)). 22:52:20 Hm. 22:52:27 I should try to program shit in Thue. 22:52:33 It seems nice. 22:54:39 ooh, nice: http://llvm.org/demo/ 22:56:28 Slereah2: your could invent a benchmark called "shit" 22:56:39 then you could literally program shit in Thue 22:57:45 The shit programming language, to test metalanguages? :o 23:01:50 Are the ++ used for representing any string? 23:02:02 I can't really find a complete description of the language 23:08:34 * SimonRC goes to bed 23:17:18 Slereah2, I wonder same as Slereah2 about Corun 23:17:26 Corun, there? 23:17:35 Presumably it was a joke in another channel 23:17:40 I do that often 23:17:41 probably 23:18:57 wat 23:24:07 Oh 23:24:08 I'm here 23:24:09 Hai hai. 23:24:16 Sorry about the temporary flash... 23:24:57 heh 23:25:26 And, it was a joke in another chunnel. 23:25:32 tusho is very astute 23:26:15 You know tusho 23:26:21 He's a regular genius. 23:26:32 yep just a regular unspecial genius 23:26:34 no accomplishments 23:27:18 Your genius can be recognized, tusho 23:27:23 By a finite state machine. 23:27:27 yeap 23:27:34 a finite state machine is somethiing I wish I could be a clever as 23:27:51 You're more of a bounded storage machine kinda guy 23:27:54 yep 23:30:42 -!- olsner has quit ("Leaving"). 23:30:54 -!- jix has quit ("This computer has gone to sleep"). 23:30:55 -!- GregorR[Prague] has quit ("Leaving"). 23:31:04 -!- ihope___ has joined. 23:31:18 -!- ihope___ has changed nick to ihope. 23:31:25 -!- GregorR[Prague] has joined. 23:35:13 -!- oerjan has quit ("Good night").