←2013-11-21 2013-11-22 2013-11-23→ ↑2013 ↑all
00:05:42 -!- augur has joined.
00:07:09 -!- nooodl has quit (Quit: Ik ga weg).
00:08:19 -!- oerjan has quit (Quit: leaving).
00:12:52 -!- augur has quit (Read error: Connection reset by peer).
00:13:17 -!- augur has joined.
00:14:45 -!- augur has quit (Read error: Connection reset by peer).
00:14:45 -!- augur_ has joined.
00:15:29 -!- augur has joined.
00:18:48 -!- heroux has quit (Ping timeout: 240 seconds).
00:19:34 -!- augur_ has quit (Ping timeout: 265 seconds).
00:19:44 -!- heroux has joined.
00:26:35 -!- S1 has left.
00:31:10 -!- nisstyre has joined.
00:38:43 <Taneb> Someone in another channel fed KJV and SICP to a markov bot
00:38:53 <Taneb> "And Jonathan caused David to be different, such as new-withdraw, we will always be considered `unreal' in five years. See BITTY BOX and TOY. GIGO (gie'goh) [acronym] garbage in, garbage out. Usually said of problems spawns new languages."
00:45:11 -!- typeclassy has joined.
00:53:04 <kmc> that's wonderful
00:53:46 <Bike> do you ever look at a biography and realize they died young and feel bad
00:59:28 -!- Phantom_Hoover has quit (Remote host closed the connection).
01:01:17 <Taneb> ^style
01:01:17 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
01:01:24 <Taneb> ^style iwcs
01:01:24 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
01:01:31 <Taneb> fungot, what are you doing
01:01:31 <fungot> Taneb: you are not evil, terrible things are happening. this time you will not. hmm, no. j. k. rowling, who had given the thrashing we saw a webcomic with a missing.
01:01:47 <Taneb> fungot, I'm not evil? I think my userpage says otherwise
01:01:47 <fungot> Taneb: but, but... that's not a fish. it's a lump of rock! we didn't give any thought the guys at nasa has fast-tracked a prototype deep has held out well on the bright side, the snakes, and 9...
01:02:54 <Taneb> ^style discworld
01:02:55 <fungot> Selected style: discworld (a subset of Terry Pratchett's Discworld books)
01:02:58 <Taneb> fungot, symbols, whose values are looked up in the court of the LORD's glory.
01:02:59 <fungot> Taneb: " they're just fnord,' the girl went on. ' it'd take all day.'
01:07:23 <Bike> fizzie: when you establish the CS books/holy text style, i can hook you up with a /lot/ of the latter
01:17:46 -!- Sgeo has joined.
01:20:18 <Taneb> I have the opportunity to give a CS-related talk at some point in the near-ish future
01:21:30 <Taneb> I'm somewhat tempted but at a loss for the topic
01:22:12 <Bike> the fast-growing hierarchy: applications to haskell-based microcontrollers
01:24:04 <Taneb> I was thinking either category theory or something about esolangs
01:24:13 -!- yorick has quit (Remote host closed the connection).
01:24:21 <Taneb> (there's pretty much no restrictions and it's not very formal or anything)
01:25:51 <Taneb> "Esolangs: programming language design as art?"
01:26:17 <Bike> that sounds way worse than mine imo
01:26:32 <Taneb> Yeah but I don't think I'm sufficiently cool to do yours
01:27:14 <Bike> sure y'are
01:29:21 -!- adu has joined.
01:51:51 -!- Bike has quit (Ping timeout: 240 seconds).
01:52:05 <myndzi> fuckin assembly
01:52:07 <myndzi> this is hurting my head
01:52:12 <myndzi> probably because i don't know anything about it :P
01:52:40 <myndzi> if i have "mov rax, cs:qword_someshit" and then "call qword ptr [rax+140h]"
01:52:41 -!- cherez has quit (Quit: Leaving.).
01:53:03 <myndzi> what is it doing? calling the code pointed to by memory address rax + 140h i assume
01:53:13 <myndzi> but cs:qword_etc is 0
01:53:23 <Fiora> it's calling the pointer at [rax+140h]
01:53:40 <Fiora> so it loads the 8 bytes at [rax+140h] into temporary space, and then calls /that/, I think.
01:53:43 <myndzi> so rax is 0 and it's just adding 0 for no good reason?
01:54:00 <Fiora> are you like, looking at compiled object code?
01:54:11 <myndzi> disassembled bios code
01:54:16 <myndzi> my fuckin laptop...
01:54:21 <myndzi> i went to put a wireless ac card in it
01:54:28 <myndzi> and its like NO I HAVE A WHITELIST U CANT USE WIRELESS CARDS LOLOL
01:54:37 <myndzi> so i'm to the part where i hack it to avoid that check :P
01:54:46 <myndzi> but i can't find where to do it
01:54:46 <myndzi> lol
01:55:05 <Fiora> the "mov rax, cs:qword_...." might be a thing to load like, the base of the code segment or something, for PIC-ish addressing?
01:55:34 <myndzi> i don't know what that means, but i'm about to check out qword_180001ac8 + 140 and see if anything is there :P
01:56:13 <myndzi> okay, that's past the end of the code lol
01:56:20 <myndzi> but
01:56:29 <myndzi> the program that extracted this module was fucked up anyway
01:56:36 <myndzi> it had like 27 bytes of garbage before the MZ
01:56:43 <myndzi> maybe an equal amount got cut off the end?
01:57:57 -!- adu has quit (Quit: adu).
02:00:14 <myndzi> anyway, nope, didn't think so
02:00:31 <myndzi> there's like a bunch of 0 bytes and various places of the code load them in
02:00:46 <myndzi> i guess that's just how it is... but if so i have no idea where it's calling :|
02:07:57 <myndzi> appears to maybe be an external call
02:08:04 <myndzi> to some other part of the bios
02:08:19 <myndzi> ah
02:08:30 <myndzi> so something would load the correct addresses there, they wouldn't be 0 at runtime obviously :P
02:08:48 <myndzi> and it's a qword which means it could be a long frickin' way away, so probabyl irrelevant for my purposes
02:11:16 -!- Taneb has quit (Quit: Leaving).
02:22:12 -!- adu has joined.
02:28:32 -!- typeclassy has quit (Ping timeout: 240 seconds).
02:57:14 -!- adu has quit (Quit: adu).
02:59:16 -!- Bike has joined.
03:01:40 -!- adu has joined.
03:02:25 -!- jconn has joined.
03:06:47 -!- typeclassy has joined.
03:12:56 -!- adu has quit (Quit: adu).
03:23:52 -!- adu has joined.
03:32:08 <quintopia> hi adu
03:32:19 <adu> hi
03:32:29 <adu> I didn't realize I had IRC open :)
03:32:30 <quintopia> what do?
03:32:49 <adu> can you repeat that in the form of a question?
03:52:11 -!- CADD has joined.
04:07:20 -!- nisstyre has quit (Quit: Leaving).
04:34:38 -!- adu has quit (Quit: adu).
04:43:53 -!- adu has joined.
04:51:07 -!- typeclassy has quit (Ping timeout: 246 seconds).
04:53:26 -!- doesthiswork has joined.
05:36:42 -!- nisstyre has joined.
05:45:09 -!- doesthiswork has quit (Quit: Leaving.).
06:09:57 -!- nisstyre has quit (Ping timeout: 252 seconds).
06:28:28 -!- adu has quit (Quit: adu).
06:48:15 -!- tangentstorm has joined.
07:25:05 <impomatic> Hi tangentstorm :-)
07:33:53 <fizzie> Bike: I still have the RFC style on the to-do list.
07:34:31 <Bike> kay
07:34:41 <Bike> are RFC holy
07:34:54 <fizzie> Also, won't people be offended if I put religious texts in?
07:35:50 <Bike> not if they're all dead religions, and that's where i come in
07:36:42 <fizzie> TIL: freenode channel guidelines imply human beings have been "designed".
07:36:54 <fizzie> [[ Speakers in physical proximity with each other communicate quite a bit of emotional context via this extra bandwidth. This context enables them to avoid misjudging the intent of their conversational partners. It also functions as an unconscious negative feedback mechanism to reduce the incidence of emotional "firestorms" which tend to disrupt the efficient flow of conversation. Human beings ...
07:37:00 <fizzie> ... look for this feedback and indeed they may be designed to require it. ]]
07:37:07 -!- FreeFull has quit.
07:37:17 <fizzie> I've always found the freenode pseudo-psychology material amusing.
07:37:46 <fizzie> (Have you polished your catalyst skills today?)
07:37:55 <Bike> amusement is about the most positive emotion i can muster in response to it
07:38:29 -!- CADD has quit (Quit: leaving).
07:40:30 <fizzie> I turned off my computer at home yesterday night since it wasn't really doing anything in particular and I would have had to reboot anyway, but now it's not responding to WOL packets. :/
07:46:24 <olsner> I guess the lack of psychic communication from fungot may lead to people misreading its intent and e.g. getting offended
07:46:24 <fungot> olsner: " no," said teppic. it was the rare kind of madness caused by being yourself for so long.
07:46:59 <fizzie> fungot: You certainly have your fair share of that.
07:46:59 <fungot> fizzie: ' commander vimes is keen on reports.' albert coughed nervously.
07:50:01 -!- carado has joined.
07:50:22 <olsner> fungot: how long have you been yourself anyway?
07:50:22 <fungot> olsner: ' don't you dare patronize me!"
07:51:00 <tangentstorm> hey impomatic :) just heard about this channel, so i thought i'd come lurk :)
07:59:18 -!- carado has quit (Ping timeout: 252 seconds).
08:03:28 -!- yiyus has quit (Ping timeout: 245 seconds).
08:45:28 -!- carado has joined.
08:47:11 -!- CADD has joined.
08:50:45 -!- augur has quit (Read error: Connection reset by peer).
08:50:50 -!- augur_ has joined.
08:59:05 -!- CADD has quit (Quit: leaving).
09:03:02 -!- carado has quit (Remote host closed the connection).
09:40:31 -!- tangentstorm has quit (Quit: WeeChat 0.3.2).
09:50:55 -!- olsner has quit (Quit: Leaving).
10:09:37 -!- drlemon has quit (Read error: Connection reset by peer).
10:21:44 -!- dchevak has joined.
10:25:36 -!- dchevak has left.
10:37:13 -!- Taneb has joined.
10:42:44 -!- Phantom_Hoover has joined.
11:09:33 -!- oerjan has joined.
11:36:37 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
11:50:00 -!- MindlessDrone has joined.
12:22:04 -!- yorick has joined.
12:32:11 -!- Taneb has quit (Quit: Leaving).
12:43:31 -!- Sgeo has quit (Read error: Connection reset by peer).
13:06:19 -!- boily has joined.
13:10:33 -!- boily has quit (Client Quit).
13:10:36 -!- carado has joined.
13:11:21 -!- jix has quit (Remote host closed the connection).
13:13:22 -!- jix has joined.
13:15:36 -!- boily has joined.
13:15:43 -!- metasepia has joined.
14:14:39 -!- variable has changed nick to trout.
14:17:25 -!- oerjan has set topic: The channel of the chimæric hellos | The most corum, clargoint chait you could ever loofefl your slance in. | Magnus♔ | Koirammekokaan ei lennä? :( | https://dl.dropboxusercontent.com/u/2023808/wisdom.pdf | logs: http://codu.org/logs/_esoteric/ or http://tunes.org/~nef/logs/esoteric/.
14:21:50 <boily> good U+2654 morning!
14:27:48 <fizzie> "-acoustic-mesh -- Preserve word-level acoustic information (times, scores, and pronunciations) in sausages, encoded as described in wlat-format(5)."
14:27:52 <fizzie> I like the terminology.
14:29:25 <boily> «acoustic sausages à la provençale, with an entrée of preserved meshes»
14:33:22 <fizzie> "-write-mesh-dir dir -- Similar, but write sausages to files in dir named after the utterance IDs."
14:33:36 <fizzie> "-init-mesh file -- Initialize the word confusion network by reading an existing sausage from file. This effectively aligns the lattice being processed to the existing sausage."
14:34:09 <Bike> fascinating... and delicious.
14:34:45 <boily> the sausages are egregious.
14:43:55 -!- hogeyui has quit (Ping timeout: 272 seconds).
14:46:09 -!- Taneb has joined.
14:46:35 <boily> hellogeyui. Tanelle.
14:47:31 <Taneb> bonjoily
14:47:59 <Taneb> Also I now own nerf guns help
14:53:36 -!- mrhmouse has joined.
14:58:47 -!- fergusq has joined.
14:59:13 -!- S1 has joined.
14:59:24 <S1> Some of you programming in deadfish?
15:00:41 -!- fergusq has quit (Client Quit).
15:03:36 -!- Rylee has joined.
15:03:52 -!- Rylee has left ("WeeChat 0.4.3-dev").
15:07:44 <boily> darn. too missed `relcomopprtunities...
15:07:52 -!- hogeyui has joined.
15:07:53 <boily> Taneb: what kind of nerf gun?
15:08:29 <Taneb> Elite Strongarm times 2
15:08:36 <mrhmouse> boily: you `relcomissed them
15:09:59 <kmc> https://www.ruby-lang.org/en/news/2013/11/22/heap-overflow-in-floating-point-parsing-cve-2013-4164/
15:10:03 <kmc> heap overflow
15:10:04 <kmc> in floating point parsing
15:10:07 <kmc> in 2013
15:11:15 <kmc> it's all there in the url people
15:11:19 -!- nooodl has joined.
15:13:36 -!- Taneb has changed nick to Ngevd.
15:13:45 <boily> heloooooooodl.
15:14:05 -!- Ngevd has changed nick to Taneb.
15:15:42 <nooodl> hoily~
15:17:45 <kmc> in other news, i wrote a program that self-modifies its machine code by calling read()
15:18:22 <Bike> like, it reads into a 'buffer' in the middle of the program?
15:18:40 <kmc> yes
15:18:45 <Bike> hells yea
15:19:24 <boily> scary.
15:19:28 -!- oerjan has quit (Quit: leaving).
15:22:37 <mroman_> and that program is used to control medical hardware, I hope?
15:22:54 -!- sebbu has quit (Ping timeout: 265 seconds).
15:25:39 -!- S1 has changed nick to S1_afk.
15:30:39 -!- sebbu has joined.
15:31:17 -!- sebbu has quit (Changing host).
15:31:17 -!- sebbu has joined.
15:32:20 <kmc> yes
15:32:27 <kmc> a nuclear-powered flying hospital
15:34:43 <b_jonas> kmc: do you at least use a lock so another thread can't execute the function while you're modifying it?
15:37:38 <kmc> i don't have threads
15:37:42 <kmc> also i don't have functions
15:37:57 <kmc> or registers (except as necessary to call read())
15:38:29 <b_jonas> huh what?
15:38:50 <b_jonas> how does that work
15:38:58 <kmc> stay tuned for an article about it
15:39:39 <b_jonas> do you not even have other processes sharing that memory map executing simultanously for which you need an ipc lock?
15:40:57 <kmc> no
15:41:04 <kmc> i guess it would be more eso if i did
15:41:10 <b_jonas> is this the kind of wasteful last century program that has a complete copy of its code allocated for just a single thread of execution? does your wood-powered hospital submarine waste its oil like it was last century too?
15:44:27 <kmc> let's go with 'yes'
15:57:13 <Slereah> Guys
15:57:28 <Slereah> If I were to try to find some PC speaker music from some old game
15:57:54 <Slereah> Can I do it by just looking at the binary for the opcodes of "send shit to the PC speaker"
15:58:07 <Slereah> And see what happens
15:59:17 <Slereah> (Or maybe with a disassembler to be more readable)
16:01:58 <int-e> there are no such opcodes. the pc speaker is driven by a programmable timer, which can be programmed via a couple of IO ports ... http://wiki.osdev.org/PC_Speaker may be useful
16:02:30 <Slereah> I am aware, yes
16:02:59 <Slereah> http://www.intel-assembler.it/portale/5/make-sound-from-the-speaker-in-assembly/8255-8255-8284-asm-program-example.asp
16:03:07 <Slereah> This is a pretty good description of it
16:04:52 <Slereah> Still I assume you cound find in a binary the "send to port 61H" parts
16:04:59 <Slereah> And maybe find the actual music from there
16:05:16 <Slereah> (though I guess it might be a procedure making it a bit more complicated)
16:05:35 -!- adu has joined.
16:06:25 <kmc> dosbox has some debugging features
16:07:11 -!- adu has quit (Client Quit).
16:10:06 -!- S1_afk has changed nick to S1.
16:11:36 <mrhmouse> boily: I made you a thing
16:11:57 <boily> mrhmouse: what is this mysterious thing you made at me?
16:12:02 <mrhmouse> `ello boily
16:12:04 <HackEgo> belloily
16:12:15 <boily> oh. oooooooh.
16:12:24 * boily grins :D
16:15:37 <mrhmouse> `ello mrhmouse
16:15:39 <HackEgo> mrhmellouse
16:19:50 <boily> `ello kmc
16:19:52 <HackEgo> kmcello
16:21:03 <mrhmouse> it has a few basic situations that it checks for, and then it falls back to "Hello, <name>!".
16:22:16 <mrhmouse> Although maybe I should have it output similarly to `thanks. "Hello, boily. belloily."
16:47:47 <boily> but if you thankify the ello, it'll remove its charm!
16:48:38 <`^_^v> is there any list of "famous" PL problems like expression, samefringe, etc
16:49:03 <boily> rosettacode? PL shootout on alioth?
16:51:25 <`^_^v> i feel like rosetta code is mostly algorithms that can have different implementations based on the language, but don't really highlight the difficulty of a problem resulting from the languages design decisions, if that makes sense
16:56:47 <nooodl> `ello nooodl
16:56:49 <HackEgo> nellooodl
16:57:19 <nooodl> `run cat bin/ello
16:57:21 <HackEgo> ​#!/usr/bin/env node \ (function() { \ var consonant_then_o, ends_with_consonant, ends_with_e, name, starts_with_o; \ \ name = process.argv[2]; \ \ if (!(name != null ? name.length : void 0)) { \ console.log('Usage: ello <name>'); \ process.exit(); \ } \ \ ends_with_e = /(.*)(e)$/i; \ \ consonant_then_o = /(.*)([bcdfghjklm
16:57:45 <nooodl> yikes javascript
16:58:24 <int-e> esoteric ;)
16:59:50 -!- Phantom_Hoover has joined.
17:08:56 -!- S1 has changed nick to S1_afk.
17:13:11 <mrhmouse> nooodl: what's wrong with JavaScript? :P
17:20:47 <Slereah> Salaam aleikum
17:20:53 <Slereah> Woops
17:20:55 <`^_^v> prototypal inheritance is so 1990s
17:20:55 <Slereah> Wrong window
17:33:14 <Phantom_Hoover> so meanwhile the first draft of the wolfram language documentation is up: http://reference.wolfram.com/language/
17:33:19 <Phantom_Hoover> it's mathematica
17:33:25 <Phantom_Hoover> like it's literally mathematica
17:34:57 -!- S1_afk has changed nick to S1.
17:41:52 <Taneb> Phantom_Hoover, it's mathematica but named after Wolfram
17:42:26 <Phantom_Hoover> he makes sure to call it Wolfram Mathematica when he can get away with it
17:42:53 <Taneb> Maybe he was saying "Wolfram/Mathematica"
17:42:59 <Taneb> like some say "GNU/Linux"
17:43:09 <Phantom_Hoover> http://reference.wolfram.com/language/guide/WebOperations.html
17:43:22 <Phantom_Hoover> whoops, looks like something got past the search-and-replace
17:43:24 <Taneb> (I kind of want a linux distro with no GNU components, just to piss off Stallman)
17:43:44 <Phantom_Hoover> those exist i think? but probably not on the desktp
17:43:46 <Phantom_Hoover> *deskto
17:43:48 <Phantom_Hoover> *desktop
17:44:31 <Taneb> I meant a desktop one, yeah
17:46:04 -!- FreeFull has joined.
17:48:10 <b_jonas> Taneb: that would be difficult
17:52:40 <Phantom_Hoover> what you should do is have every contributor listed in the name rather than just GNU
17:55:04 <boily> when it's cold and rainy outside, nothing beats a good plate of random steamy italian food.
18:02:36 -!- Bike has quit (Ping timeout: 246 seconds).
18:10:08 -!- Bike has joined.
18:11:40 -!- Taneb has quit (Ping timeout: 245 seconds).
18:18:06 -!- Taneb has joined.
18:25:21 -!- Bike has quit (Ping timeout: 241 seconds).
18:26:48 <boily> sudden random interrogation: what happened to jsvine and his II?
18:29:13 <FireFly> ¿jsvine?
18:29:30 <mrhmouse> ¿II?
18:29:37 <Phantom_Hoover> nobody knows
18:29:42 <Phantom_Hoover> `seen jsvine
18:29:47 <HackEgo> not lately; try `seen jsvine ever
18:29:54 <Phantom_Hoover> `seen jsvine ever
18:30:01 <HackEgo> 2013-08-05 21:08:56: <jsvine> Bike: you might like this: https://github.com/dwillis/post_haste
18:30:49 <Phantom_Hoover> i wonder if bike liked it
18:31:05 -!- Bike has joined.
18:31:55 -!- Taneb has quit (Ping timeout: 272 seconds).
18:39:55 <boily> mrhmouse: Infamous Interview.
18:40:14 <Phantom_Hoover> Bike, <HackEgo> 2013-08-05 21:08:56: <jsvine> Bike: you might like this: https://github.com/dwillis/post_haste
18:40:14 <Phantom_Hoover> <Phantom_Hoover> i wonder if bike liked it
18:41:10 <Bike> i don't remember august
18:43:28 <FireFly> August was like forever ago
18:43:34 <FireFly> even HackEgo seems to think so
18:45:03 <boily> fungot: how many evers is August for you?
18:45:03 <fungot> boily: ' not your fault you've moved into a city full of giants,' said detritus, stoically. ' i see here where it contains a number of surprised animals stared down at him.
18:45:34 <boily> fungot: pratchett style today, eh? and indeed, it ain't my problem. besides, giants live Downtown, and I don't.
18:45:35 <fungot> boily: " i suppose it makes sense anyway. there's only so much more clearly... wondering about going in and out of the window by their ankles
18:47:11 <FireFly> boring fungot style imo
18:47:11 <fungot> FireFly: oats gave up and made a noise like a mouse blowing fnord, and eight, and a couple of ugly things were coiled up in the darkness, found the greasy pilings of a jetty, and clung to them, we're something that might have looked like part of the background hum of the castle mews. there was a question about music. power found its way out.
18:47:44 <FireFly> `style fungot
18:47:44 <fungot> FireFly: 45. file://localhost/ mnt/ space/ media/ books/ 1000+sci-fi%20books/%5bebooks%5d%201000+%20sciencefiction%20%26%20fantasy%20novels%20%28.lit%20forma/ pratchett%2c%20terry/ text/ 19/ fnord
18:47:45 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: style: not found
18:47:52 <FireFly> ^style fungot
18:47:52 <fungot> Selected style: fungot (What I've said myself)
18:48:00 <Bike> whoa, whoa, that shit's illegal!!
18:48:31 <FireFly> fungot: I didn't know you're a pirate
18:48:31 <fungot> FireFly: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp
18:48:59 <FireFly> Is this a sign? I think fungot wasn't content with my choice of style
18:48:59 <fungot> FireFly: so, let's say i call them mindless games. if we hit every stupid person, any person going, tough one. if we solve it,... i know...
18:49:22 <Phantom_Hoover> fungot's getting sinister
18:49:22 <fungot> Phantom_Hoover: no, it's not. it's more complex than that. read the code.) good stuff
18:49:39 <Phantom_Hoover> sorry fungot i've underestimated the depths of your character
18:49:39 <fungot> Phantom_Hoover: to, uhhh.... like nuns in the street, and has not named a programming language... as it's pretty difficult to get computers, but i think they can keep their bullsh*t straight.)
18:50:07 <FireFly> fungot: your code *is* good stuff, though
18:50:07 <fungot> FireFly: or is it just me, or i: yet, you rogue! fnord fnord --user:protiousgeorge ( user talk:protioustalk) 01:44, 8 september. the officials of the european union's number, and can be extended by nesting them ( having one function call. if one is older. see http://okmij.org/ ftp/ papers/ lagarias/ paper/ html/ fnord
18:50:51 <boily> I have a dream. I dream that someday fungot will balance his parenthesises.
18:50:52 <fungot> boily: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube ( some youtube comments)
18:51:07 <FireFly> Your dream came true
18:51:18 <boily> fungot: thungot.
18:51:18 <fungot> boily: am i that much bad. take up, boy; open't. so, now go with, do miscarrie, thou had'st bin resolute pompey
18:59:51 -!- S1 has left.
19:03:17 <quintopia> hoily!
19:03:27 <quintopia> bonjoily!
19:03:38 <mrhmouse> I'd like to watch a fungottian version of Julius Caesar
19:03:38 <fungot> mrhmouse: and is one thing which you might want is broken" archives. even less chance. i called " o" in " the other side has. you came through and through and through and through and through and through and through and through and through and through and through and through and through and through and through and through and through and through and through and through and through and through and through and through and through
19:04:15 <quintopia> i love it when it gets stuck in loops
19:05:08 <quintopia> ^style youtube
19:05:08 <fungot> Selected style: youtube (Some YouTube comments)
19:05:12 <int-e> fungot is demonstrating Pollard's rho method?
19:05:12 <fungot> int-e: but that is so funny to read my previous post? again: no a320 has ever flown completely by computer and fully automated, there for taking him into the forest at over 200mph? wikipedia should not be allowed to show the ' tenor' roles...
19:05:35 <boily> quintopia: hintopia! before you ask, no package yet.
19:05:46 <int-e> `ello me
19:05:47 <HackEgo> mello
19:05:48 <quintopia> i wasn't even thinking of asking
19:06:05 <quintopia> `ello quintopia
19:06:07 <HackEgo> quintellopia
19:06:16 <quintopia> clever!
19:07:26 <boily> but I want your package!
19:08:18 <quintopia> i'm not in charge of that! talk to the postal service!
19:08:43 <quintopia> (unless you mean the other one. in which case, ... talk to "the postal service")
19:11:29 -!- s_o_l has joined.
19:11:43 -!- s_o_l has left ("Leaving").
19:12:57 <boily> ah, the joy of having to go through USPS and Postes Canada...
19:13:06 <Slereah> Hurray, got Flat Assembler to work!
19:13:08 <Slereah> I printed an h!
19:13:11 <boily> (yes, I meant the other other one.)
19:13:30 <Slereah> Though I had to go to dosbox
19:13:42 <Slereah> Apparently windows 64 bits is a bit more finnicky
19:15:41 <int-e> yay, I can still do *that* ... mov al, 68h; int 29h; int 0x20h
19:15:52 <int-e> eh, 0x20 -> 20h
19:16:00 <int-e> and hh -> h
19:17:09 <Slereah> I incremented the register and printed it
19:17:13 <Slereah> And now it says hi :o
19:18:07 <boily> are your brainfscking your helloworld through assembly by hand? that's nice :D
19:20:56 <Slereah> Well I am lurnin'
19:21:20 -!- muskrat has joined.
19:21:27 -!- muskrat has left.
19:22:33 <int-e> and what on earth where they thinking when they decided to use $ as a terminator for strings... http://www.ctyme.com/intr/rb-2562.htm
19:23:02 <int-e> (maybe they didn't appreciate money back then? :) )
19:24:09 <boily> how do you print an '$', then?
19:24:54 <int-e> I should link to this copy, less infested by banners (but still some stuff from amazon. sigh. the internet is going to hell.). http://www.delorie.com/djgpp/doc/rbinter/id/73/25.html
19:25:51 <int-e> boily: you can print single characters or use proper file IO: http://www.delorie.com/djgpp/doc/rbinter/id/02/28.html
19:26:18 <int-e> (0 is stdin and 1 is stdout, I wonder where they got that from ;-) )
19:32:26 <boily> I have multiple aggressive adblocking and privacy-preserving extensions installed.
19:33:01 <boily> BX is on how many bytes?
19:34:10 <int-e> a 16 bit register
19:35:15 <Slereah> Or two 8 bit ones
19:35:20 <Slereah> BH and BL
19:35:35 <fizzie> Or half a 32-bit one, or one quarter of a 64-bit one.
19:40:29 <boily> so, at most 65536 open files at the same time.
19:40:37 <boily> (well, minus stdin, out and err)
19:45:31 <int-e> you'll run out of memory first
19:46:11 <Slereah> Which one is the 32 bit, EBX I think?
19:46:17 <Slereah> And RBX for 64?
19:47:15 <fizzie> Yes.
19:47:20 <int-e> Hah, I forgot that. CONFIG.SYS had a FILES directive for the number of files that could be opened at once; typical values would be 20 to 40.
19:47:50 <int-e> (keep in mind that as a rule, only one process would have files open at a time. so that's actually plenty.)
19:53:50 <fizzie> FILES=255
19:53:56 <fizzie> (It doesn't go any higher.)
19:54:55 <int-e> but that eats kilobytes of memory!
19:57:07 -!- ais523 has joined.
20:01:10 <mrhmouse> mmm.. kilobytes...
20:06:41 -!- Bike has quit (Ping timeout: 252 seconds).
20:11:58 -!- Bike has joined.
20:13:51 <fizzie> I have FILES=80 in my CONFIG.SYS, it seems.
20:14:00 <fizzie> FILES=80 STACKS=9,256
20:14:27 <fizzie> Oh, wait; there's FILES=35 for some other menu options.
20:14:32 -!- faryad has joined.
20:17:10 -!- faryad has quit.
20:20:20 <ais523> fizzie: you still have a config.sys?
20:20:32 <boily> people here have weird, weird setups.
20:20:57 <boily> @tell zzo38 you are the weirdest.
20:20:58 <lambdabot> Consider it noted.
20:21:34 <b_jonas> ais523: I have one too in my bochs dos install. I have to play commander keen somehow.
20:21:47 <fizzie> ais523: It's in ~/archive/backup/older/colin/old/misc_install/4dos/config.sys, so it's not exactly... active...
20:21:57 <ais523> fair enough
20:22:10 <boily> colin?
20:22:12 * ais523 runs locate config.sys
20:22:19 <ais523> I guess colin is a hostname
20:22:24 <fizzie> boily: A former hostname, indeed.
20:22:33 <b_jonas> well, I might be able to play it without a config.sys in dosbox, technically, but I run a real ms-dos in bochs more often
20:22:54 <b_jonas> I use dosbox only for games that don't run under bochs
20:23:42 <fizzie> I should perhaps do some directory cleaning some day.
20:24:01 <fizzie> As an illustrative example, there's the directory ~/__UBUNTU__/_MUST_SORT_/momusspace-before-crash/mnt/_NSA_MOVE_/music_unsorted/random/old/unsorted/ that has some music in it.
20:24:47 <b_jonas> ais: in fact, I also have a smaller bochs install that I wired up to irc and might be thematically approperiate for this channel:
20:24:56 <ais523> btw, I figured out what's up with Unity; it's trying to become Google Desktop
20:25:06 <b_jonas> you can run edlin in it to edit files, then bcc to compile C and run the executables
20:25:07 <ais523> which explains why people are confused
20:25:12 <b_jonas> so it can serve as an evalbot
20:25:16 <ais523> b_jonas: wow, I used to use bcc
20:25:17 <int-e> I guess /etc/dosemu/freedos/config.sys doesn't really count.
20:25:35 <b_jonas> I can show it if you want but it's a bit verbose so probably not on this channel
20:25:51 <int-e> (I would have to dig out the HD image from a previous PC)
20:25:56 <ais523> there's #esoteric-blah for things that are appropriate here except too verbose
20:25:59 <ais523> but it hasn't been used for ages
20:26:03 <quintopia> hi b_jonas
20:26:07 <ais523> and so I doubt anyone's there
20:27:27 <b_jonas> if you want to try it, just tell me so
20:28:02 <quintopia> evalbot? HackEgo is good enough for me...
20:28:27 <b_jonas> but this runs a full OS where you have root rights
20:28:41 <boily> there's an even more off-topic channel than #esoteric? wooooah, duuuuude...
20:28:44 <Bike> still sounds like hackego
20:29:09 <b_jonas> theoretically you can even install a new OS on it and reboot, all through irc, only you want a very small OS because it's not connected to the internet so you have to transmit all the files through irc
20:29:41 <int-e> "not connected to the internet" haha
20:30:17 <int-e> (no internet protocol, I got it, but it's still a funny claim when you can talk to it via IRC)
20:30:48 <ais523> technically, IRC would work without being part of the public Internet, despite the "Internet" in its name
20:30:52 <b_jonas> no, it's not no internet protocol
20:30:58 <b_jonas> it's that the virtual machine doesn't have a net connection
20:31:01 <ais523> Usenet used to not be part of the public Internet at all
20:31:08 <b_jonas> only a serial console which a wrapper connects to irc
20:31:13 <ais523> although nowadays nearly always goes over the Internet
20:31:25 <ais523> there's probably some Usenet-only cable still keeping it connected somewhere
20:32:53 <b_jonas> in theory you could install a linux on the vm and use the same wrapper, configured to talk through serial console, and it would still not have net access
20:34:22 <fizzie> Ah, but if you set it to talk slirp or something over the IRC to another system that's configured to route for it.
20:34:29 <fizzie> Then you could argue it suddely has net access.
20:34:33 <ais523> then the other system is proxying for it
20:34:36 <ais523> so it only has proxy access
20:34:55 <b_jonas> fizzie: yes, only the bandwidth would be really slow
20:35:03 <fizzie> That's not any different from a carrier who does NAT for all their customers, and that's still called "net access".
20:35:20 <b_jonas> sure, but you don't need net access
20:35:31 <b_jonas> you could just directly type an uuencoded file through the serial console
20:35:52 <b_jonas> but you'd be limited in bandwidth seriously
20:35:55 <b_jonas> so it's not worth
20:36:18 <fizzie> It's a matter of principle.
20:36:22 <b_jonas> if you wanted to transmit large files, it would be easier to convince me to give you some kind of direct access outside of irc, or run the machine yourself, or something
20:36:26 <b_jonas> sure
20:37:56 <fizzie> fungot: Do you consider yourself to have net access?
20:37:56 <fungot> fizzie: yes, pilots on board...there were 136 people on board. the first modern warfare(which i think his face. well, atleast in tucson, arizona. during the cold war.
20:38:54 <b_jonas> hmm, now I have an urge to show that bot here and get kicked for flood
20:39:48 <boily> b_jonas: your bot couldn't be as floody as mine. let's have a duel!
20:40:01 <b_jonas> boily: ok, on what channel?
20:40:21 <boily> b_jonas: esoteric-blah.
20:40:25 <b_jonas> boily: #buubot ? that channel likes floody bots
20:40:43 <boily> buubot?
20:40:48 <b_jonas> #esoteric-blah then
20:43:41 -!- genesisp31011 has joined.
20:44:30 -!- genesisp31011 has left.
20:46:53 <Slereah> Woo
20:46:58 <Slereah> I made a function to display a number
20:47:20 <Bike> good job.
20:48:37 -!- MindlessDrone has quit (Quit: MindlessDrone).
20:48:57 -!- oerjan has joined.
20:55:21 <oerjan> <Slereah> Wrong window <-- in which Slereah accidentally reveals his al-qaeda membership.
20:55:32 <Slereah> Well it was for #generalrelativity
20:55:40 <Slereah> (It's a secret Al Qaeda front)
20:55:41 <int-e> (convert 0 <= al <= 15 to 0123456789ABCDEF ASCII:) cmp al, 10; sbb al, 69h; das
20:55:54 <Slereah> We discuss the word of the Imam Al Bert
20:57:23 <oerjan> gener al-relativity
21:02:11 <int-e> `ello relativity
21:02:13 <HackEgo> Hello, relativity!
21:03:06 <mrhmouse> int-e: yeah, it falls back to a simple hello when it can't mangle the name nicely.. Any ideas for how to mangle "relativity"?
21:03:33 <int-e> I was expecting something like rello-ativity
21:03:38 <Bike> `ello bike
21:03:40 <HackEgo> bikello
21:03:47 <Bike> relatello
21:03:59 <int-e> `ello int-e
21:04:01 <HackEgo> int-ello
21:04:12 <int-e> `ello lambdabot
21:04:14 <HackEgo> lambdabellot
21:04:20 <mrhmouse> int-e: I could probably have it look for el+
21:05:40 <mrhmouse> or maybe el+[aeiouy]+, and have it output "rellotivity"
21:07:23 <shachaf> `ello shachaf
21:07:25 <HackEgo> shachafello
21:07:37 <shachaf> `ello cello
21:07:39 <HackEgo> cellello
21:08:13 <FireFly> `ello kmc
21:08:15 <HackEgo> kmcello
21:08:38 <FireFly> `ello fungot
21:08:38 <fungot> FireFly: is this funny shit. unless they pull off a level, really, i dont now how too write it in the programation, the crew at the station, then... shit, we saw survivors, later we saw captain covered with blood after the game- the preview?
21:08:40 <HackEgo> fungellot
21:09:06 <ais523> ^style
21:09:07 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube*
21:09:18 <ais523> hmm… youtube comments are no more
21:09:24 <ais523> but they live on through fungot
21:09:24 <fungot> ais523: actually, laminarwing, test planes with airline colors are not like im writing a fucking freak.
21:09:43 <shachaf> fungot: wow v. realistic
21:09:43 <fungot> shachaf: get the facts that are part 121 certified by both the game was hysterical.
21:10:11 <FireFly> yeah shachaf get the facts. fungot is 121 certified for realistic youtube comment impressions.
21:10:11 <fungot> FireFly: here's the short haired one from earlier scenes on trailer.
21:10:22 <FireFly> v. hysterical
21:13:27 <fizzie> It's kind of fixated on planes in this mode.
21:14:21 <shachaf> fungot: tell me about the astral plane
21:14:21 <fungot> shachaf: don't be discouraged from flying again.
21:15:14 <mrhmouse> `ello relativity
21:15:15 <HackEgo> rellotivity
21:15:49 <b_jonas> `help
21:15:50 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
21:16:41 <mrhmouse> fungot: I've never flown before. What should I expect from it?
21:16:41 <fungot> mrhmouse: no one was aboard this flight had a little over 3,000. granted, any crash is unacceptable but i just don't want to land xd
21:17:09 <fizzie> fungot: You've got to land at some point.
21:17:09 <fungot> fizzie: to any expert, what is the first unmanned, computer didn't ' try to see people killed.
21:17:19 <fizzie> Well, that's comforting.
21:17:36 <fizzie> Any people-killing was apparently purely accidental.
21:17:52 <mrhmouse> fungot didn't _mean_ to kill people. it just didn't want to land.
21:17:52 <fungot> mrhmouse: whats that " these angels" are the old her better when she saw me jizz in my pants
21:18:38 <b_jonas> `perl -e 'print "\u\c*\c5\c3\c4\c`\c!\c.\c/\c4\c(\c%\c2 \u\c0\c%\c2\c,\c`\c(\c!c\c+\c%\c2\cJ"'
21:18:40 <HackEgo> No output.
21:18:45 <b_jonas> huh?
21:18:50 <FireFly> try with `run
21:18:54 <b_jonas> `run perl -e 'print "\u\c*\c5\c3\c4\c`\c!\c.\c/\c4\c(\c%\c2 \u\c0\c%\c2\c,\c`\c(\c!c\c+\c%\c2\cJ"'
21:18:55 <HackEgo> Just another Perl hacker
21:19:01 <b_jonas> better, thanks
21:19:24 <FireFly> "`command blah bluh bleh" runs `command` with the single argument that is the literal string "blah bluh bleh"
21:19:34 <FireFly> whereas `run does sh
21:19:42 <b_jonas> ah, I see
21:20:03 <shachaf> `run cat /proc/$$/cmdline
21:20:05 <HackEgo> cat./proc/285/cmdline.
21:21:03 <shachaf> `run cat /proc/$PPID/cmdline
21:21:05 <HackEgo> sh.-c.'env' 'PATH=/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin' 'HACKENV=/hackenv' 'http_proxy=http://127.0.0.1:3128' 'LANG=en_NZ.UTF-8' '/home/hackbot/hackbot.hg/multibot_cmds/lib/limits' 'bash' '-c' 'cat /proc/$PPID/cmdline' | cat.
21:21:08 <b_jonas> `perl -eeval for'for$=(2..27){$*=0;$*=($**$=+ord)%127,for/./gs;print+chr$*}'."\n#ig\\tq\24^-/v\c^l,\23\$%\3\ta2\tk\b\c\)\x18 -- ambrus"
21:21:09 <HackEgo> ​$* is no longer supported at (eval 1) line 1. \ Just another Perl hacker,
21:21:31 <b_jonas> works
21:22:00 <b_jonas> ah, I have a variant that's warning-free in newer perls
21:22:28 <b_jonas> `perl -eeval for"for\$^(2..27){\$==0;\$==(\$=*\$^+ord)%127,for/./gs;print+chr\$=}\n#P*h!9= Nn[\c\9\0*.:\eUt\17%j{dY\31 -- ambrus"
21:22:29 <HackEgo> Just another Perl hacker,
21:22:30 <shachaf> It's OK, you don't have to type it.
21:22:34 <shachaf> We believe you.
21:23:29 <b_jonas> this bot msgs the answer without any prefix. I like that, that's great for creating a loop between two bots.
21:23:42 <FireFly> Not quite true
21:24:01 <FireFly> I think it inserts ^O before the reply, precisely to protect against that (and unwanted CTCPs)
21:24:12 <b_jonas> ah, nice
21:24:30 <b_jonas> I didn't know about that trick
21:24:39 -!- shachaf has left.
21:24:51 <b_jonas> I mean, the normal method is to just have bots send NOTICEs instead of msgs, but few people do that
21:25:45 <Slereah> Hm
21:25:49 -!- evalj has joined.
21:25:50 <fizzie> It's a non-breaking space it inserts, isn't it?
21:25:55 <fizzie> Er, zero-width space.
21:25:56 <b_jonas> fizzie: no
21:25:59 <b_jonas> um
21:26:00 <b_jonas> wait
21:26:02 <b_jonas> let me try
21:26:02 <Slereah> The assembler is bitching if I try mov es, ip
21:26:16 <Slereah> Is it not the same size, or is it because it's the instruction pointer?
21:26:18 <b_jonas> `echo division
21:26:19 <HackEgo> division
21:26:26 <b_jonas> Slereah: there's no such instruction
21:26:29 <elliott> you write to the instruction pointer with jmp
21:26:37 <b_jonas> whoa, it doesn't actually insert anything!
21:26:43 <Slereah> Yes, but I'm not writing in IP
21:26:48 <Slereah> I'm reading its value
21:26:53 <fizzie> b_jonas: It's only inserted when the reply starts with something that could plausibly be a command prefix.
21:26:59 <Slereah> And saving it for later
21:27:00 <b_jonas> Slereah: still, there's just no such instruction as that on x86
21:27:02 <FireFly> `echo ^a
21:27:04 <HackEgo> ​^a
21:27:05 <Slereah> Hm
21:27:14 <Slereah> How do I keep track of where I left off then?
21:27:16 <b_jonas> ah
21:27:17 <fizzie> `echo .foo
21:27:19 <HackEgo> ​.foo
21:27:26 <b_jonas> Slereah: with the call insn
21:27:27 <fizzie> `unidecode > ​.f
21:27:28 <HackEgo> ​[U+003E GREATER-THAN SIGN] [U+0020 SPACE] [U+200B ZERO WIDTH SPACE] [U+002E FULL STOP] [U+0066 LATIN SMALL LETTER F]
21:27:37 <fizzie> U+200B ZERO WIDTH SPACE, apparently.
21:27:41 <b_jonas> `echo ] 39$'x'
21:27:42 <lambdabot> That's Numberwang!
21:27:43 <HackEgo> ​] 39$'x'
21:27:47 <Slereah> insn?
21:27:51 <b_jonas> instruction
21:27:59 <b_jonas> `echo evalj: 39$'x'
21:28:01 <HackEgo> evalj: 39$'x'
21:28:01 <evalj> HackEgo: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
21:28:31 <b_jonas> `echo evalj: '`echo hi'
21:28:32 <Slereah> "Pushes Instruction Pointer (and Code Segment for far calls) onto stack and loads Instruction Pointer with the address of proc-name."
21:28:33 <HackEgo> evalj: '`echo hi'
21:28:33 <evalj> HackEgo: `echo hi
21:28:35 <Slereah> Ah yes, sounds like it
21:29:28 <b_jonas> anyway, yes, it looks like it inserts some non-ascii stuff before some prefixes
21:29:40 <b_jonas> and evalj doesn't like that before its short prefix
21:30:12 <b_jonas> `echo ~help
21:30:13 <HackEgo> ​~help
21:30:19 <b_jonas> too smart
21:30:28 <fizzie> Everything outside of [a-z] and maybe digits, from what I recall.
21:30:31 <Slereah> To jump back, can I pop the stack into es and do jmp es?
21:30:43 <fizzie> Slereah: No, but you can "ret".
21:31:14 <Slereah> I'm a bit disappointed
21:31:14 <fizzie> You could also pop the stack to some general-purpose register (not a segment one) and jmp to it, but that sounds very silly.
21:31:24 <b_jonas> Slereah: this is what arch exactly? x86_16, x86_32, or x86_64?
21:31:30 <Slereah> I was expecting assembly to be a bit more arcane
21:31:39 <Slereah> Currently using DOSBOX for it
21:31:47 <Slereah> So I assume it is 16?
21:31:50 <Slereah> 32 maybe
21:32:05 <fizzie> 16 or 32, depending.
21:32:14 <b_jonas> if you want to treat ip as a general register, get an ARM or MIPS or whichever arch that is that does that
21:32:18 <b_jonas> but I think that's crazy
21:32:30 <b_jonas> it's a bad idea for an architecture to do that
21:32:32 <Slereah> Well it is #esoteric
21:32:35 <b_jonas> sure
21:32:40 <fizzie> ARM no longer does that in AArch64, either.
21:32:50 <b_jonas> fizzie: I see
21:32:51 <fizzie> (No more combined multi-register pop and return.)
21:33:08 <b_jonas> does it have jump instructions then?
21:33:22 <FireFly> Are there any "real" architectures that treat pc as a general register?
21:33:30 <FireFly> (and encode jumps as arithmetic on pc)
21:33:53 <Slereah> I think it would be pretty neat to be able to write some self modifying code
21:34:01 <Fiora> does 32-bit ARM do that?
21:34:10 <Fiora> I remember seeing code with pc in it and stuff
21:34:29 <fizzie> Fiora: I think that's arguable. I mean, it does have separate jump instructions too.
21:34:31 <Bike> i thought the notion of a program counter was oudatd.
21:34:52 <Fiora> huh. so like, redundant instructions? is there a reason for that?
21:34:53 <fizzie> Fiora: (With bigger relative offsets than just usual immediate arithmetic.)
21:34:56 <Fiora> ohhhhh
21:34:56 <b_jonas> well, x86_64 can read ip, though not as a general register,
21:35:02 <Fiora> that makes sense.
21:35:09 <b_jonas> they added that so you can write position independent code
21:35:17 <b_jonas> but it can't just write ip of course
21:35:20 <b_jonas> you need jumps for that
21:35:48 <fizzie> Fiora: Also conditional jumps even in modes that don't have condition bits for all instructions.
21:35:50 <b_jonas> however, x86_32 didn't have that
21:36:07 <b_jonas> Slereah: so what? you can still write self-modifying code with jumps
21:36:40 <b_jonas> Slereah: if you want to do so, I recommend overwriting the instruction byte of a conditional jump with the opposite condition
21:36:49 <b_jonas> thus dynamically negating a jump
21:37:07 <b_jonas> recommend as in #esoteric obviously
21:38:19 <fizzie> Fiora: What it didn't have (I think) is a separate RET instruction, but I guess that's pretty common on architectures with a link register.
21:40:32 <b_jonas> Bike: you'd get that impression from Knuth, yeah
21:40:51 <b_jonas> but a program counter is really just a different name for an instruction pointer, or for the * register as Knuth calls it
21:40:57 <b_jonas> well, he doesn't call it a register
21:41:15 <Bike> i meant because of ooe and stuff.
21:41:23 <b_jonas> ooe?
21:41:23 <Bike> been a while since i've read taocp1, unfortunately
21:41:27 <Bike> out of order execution
21:41:34 <b_jonas> um so?
21:41:47 <boily> ooe: Out Of Echaracter.
21:41:59 <Bike> So things aren't as simple as one instruction then another instruction.
21:42:03 <b_jonas> the semantics is still given by serial execution with an ip, except maybe with some modification
21:42:21 <b_jonas> it's not like the cpu can just randomly pick instructions from anywhere and execute them
21:42:42 <b_jonas> I mean, some obfuscations play with that, but real cpus don't
21:42:56 <b_jonas> there's that ioccc winner
21:44:25 <b_jonas> `perl sub h($){($_=$_[0]=pack b208,0 .unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLB%Ox)Z]n0*zf\0I3"=~/./g;print$r
21:44:26 <HackEgo> Can't open perl script "sub h($){($_=$_[0]=pack b208,0 .unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLB%Ox)Z]n0*zf\0I3"=~/./g;print$r": No such file or directory
21:44:35 <b_jonas> `perl -esub h($){($_=$_[0]=pack b208,0 .unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLB%Ox)Z]n0*zf\0I3"=~/./g;print$r
21:44:36 <HackEgo> Just another Perl hacker,
21:44:39 <b_jonas> duh
21:44:54 <boily> what the fungot is that linënoise...
21:44:54 <fungot> boily: and if there were many passengers.
21:45:03 <b_jonas> boily: http://www.perlmonks.com/?node_id=863110
21:45:03 <boily> fungot: then it'd have crashed.
21:45:04 <fungot> boily: the flying club which staged the show
21:45:06 <Bike> many, many passengers. (fungöt)
21:45:09 <Bike> good.
21:45:24 <boily> b_jonas: ain't clicking on that. I swore off perlmonks-related drugs years ago.
21:45:44 <b_jonas> boily: evaluates a polynomial over GF(128)
21:45:59 <b_jonas> that long double-quoted string encodes the polynomial
21:46:21 <boily> ...
21:46:25 <boily> ...........
21:46:31 <boily> /clear
21:46:33 <boily> /abort
21:46:37 <b_jonas> it has a funny story
21:46:38 <boily> /flee-in-abject-terror
21:48:14 <b_jonas> ages ago I wrote a perl obfu that evaluates a polynomial over GF(127), which is of course much easier. then martin reinvented that idea and wrote his version.
21:48:45 <b_jonas> then I said that his obfu was better than mine, but would be even more amazing if it did computations over GF(128).
21:49:32 <b_jonas> he took that seriously and wrote such an obfu, which works quite differently from mine: it computes a table of powers of some primitive root and uses that as a log table to do the multiplications.
21:49:51 <b_jonas> I had to one-up his obfu and so wrote this GF(128) obfu which is better
21:50:06 <b_jonas> it looks nicer if I don't have to paste it in one irc line of course
21:50:51 <boily> “looks better”. yeah right. it still disturbs me.
21:50:55 <b_jonas> the nice part is that the obfu is branded in that you can't just strip the "ambrus" part from it and replace it with your name without understanding the obfu
21:51:09 <Slereah> http://pastebin.com/raw.php?i=ucw6tpJa
21:51:15 <Slereah> Goddamn this took forever to write
21:51:16 <b_jonas> because that's part of the polynomial
21:51:52 <boily> if it weren't, I'd only have felt dejected.
21:52:31 <boily> Slereah: oh, shiny!
21:52:42 <Slereah> Now to write a loop to print all the numbers!
21:52:45 <Slereah> 255 to 0
21:53:28 <Slereah> Oh great
21:53:33 <Slereah> Loop uses cx
21:53:47 <Slereah> I'd better rewrite the cx stuff into dx
21:53:54 <b_jonas> Slereah: modify it to write to stdout and you can try it with that dos machine hooked up to irc that I just showed on #esoteric-blah
21:54:09 <b_jonas> Slereah: it even has an assembler installed I think
21:54:24 <Slereah> Isn't that a lot to put in IRC
21:54:33 <b_jonas> not really
21:54:48 <b_jonas> strip the comments and I guess it fits in a couple of irc lines
21:55:07 <b_jonas> plus, that's why it's -blah channel, we can flood there
21:56:37 <Slereah> "The "label" operand must be within -128 or 127 bytes of the instruction following the loop instruction."
21:56:38 <Slereah> Whaaat
21:56:52 <Slereah> Goddamn
21:56:58 <Slereah> Well fortunately the code is small enough
21:57:00 -!- boily has quit (Quit: GAÀÁẢẠÃ!).
21:57:03 -!- metasepia has quit (Remote host closed the connection).
21:57:51 <int-e> you can always do things like loop foo -> loop x; jmp y; x: jmp foo; y: ... though you're probably better off with dec cx; jnz foo.
21:58:11 <b_jonas> Slereah: really, modify it to call dos function 40h and it should work in termbot
21:58:11 <int-e> (but loop preserves flags, so that's not always an option)
21:58:36 <b_jonas> int-e: why bother? on a 286 (or is it 386) onward you can just use the long form conditionals
21:58:48 <int-e> b_jonas: not with 'loop'.
21:58:48 <b_jonas> which take a wider offset
21:58:51 <b_jonas> ah, loop
21:58:52 <b_jonas> ...
21:58:53 <b_jonas> ok
21:59:11 <int-e> b_jonas: see also the part after the ellipsis :)
21:59:23 <b_jonas> ah, I see
21:59:34 <b_jonas> anyway, this code is so short it won't even come up
22:00:35 <Slereah> https://dl.dropboxusercontent.com/u/19940612/loop.jpg
22:00:37 <Slereah> Trippy
22:00:45 <Slereah> I guess "line feed" doesn't mean the same thing here
22:01:35 <b_jonas> Slereah: show us the source when it's ok so we can try it in evalbot!
22:01:44 <int-e> you need CR/LF (ASCII 13, 10)
22:01:54 <Slereah> Damn you windows!
22:02:00 <int-e> DOS
22:02:04 <Slereah> winDOS
22:02:08 <int-e> actually, old line printers did the same
22:02:27 <Slereah> Yes, but this is not a printer
22:02:33 <int-e> it's even in the name, LF is a line feed, cr is a carriage return
22:02:41 <Slereah> I'm aware, yes
22:02:42 <int-e> it's a terminal, which emulates a printer :)
22:02:46 <Slereah> Old typewriter terminology
22:03:14 <b_jonas> I think you can skip the cr in the irc bot wrapper
22:03:24 <b_jonas> I'm not quite sure
22:03:31 <b_jonas> cr lf is probably better
22:03:33 <b_jonas> more portable
22:04:15 <int-e> Portable DOS code.
22:04:22 <b_jonas> int-e: exactly
22:04:25 <Slereah> http://pastebin.com/hp1akjtk
22:04:27 <Slereah> There you go
22:04:28 <Slereah> It works
22:04:33 <b_jonas> int-e: come on, windows will support it for years after dos
22:05:09 <b_jonas> Slereah: great, but like I said, modify it to use dos function 40h so it writes to stdout, or else the output won't go through irc
22:05:29 <Slereah> How is it called?
22:05:39 <b_jonas> wait, let me check the manual
22:05:47 <Slereah> int 40h, printing al?
22:05:54 <b_jonas> no
22:06:42 <int-e> http://www.delorie.com/djgpp/doc/rbinter/id/69/25.html is probably more convenient (and should still go through the file handle properly)
22:07:12 <b_jonas> int 21h because it's a dos function, ah=40h, bx=1 is the file handle, cx= the number of bytes, ds:dx=address of bytes
22:07:24 <b_jonas> like the write call for unix
22:07:29 <Slereah> Fuck
22:07:33 <Slereah> it uses dx
22:07:38 <Slereah> But dx is required D:
22:07:39 <b_jonas> so? push and pop it
22:07:43 <Slereah> Ah yes
22:07:46 <Slereah> The stackin'
22:07:53 <int-e> honestly, use mov ah,06h; mov dl,char; int 21h
22:08:08 <Slereah> Well I need to keep track of dx
22:08:12 <int-e> saves you setting up a memory buffer
22:08:14 <Slereah> It contains important things
22:08:16 <int-e> push dx; pop dx
22:08:21 <Slereah> Will do
22:08:26 <int-e> and you can modify dx inbetween
22:08:27 <b_jonas> int-e: does that go to stdout? I see
22:09:43 <b_jonas> I guess I'm too used to unix to think of any way other than write(2) to write stuff
22:10:05 <Slereah> printnum:
22:10:06 <Slereah> add al, 0x30
22:10:06 <Slereah> push dx
22:10:06 <Slereah> mov dl, al
22:10:06 <Slereah> mov ah, 0x06
22:10:06 <Slereah> int 0x21
22:10:06 <Slereah> pop dx
22:10:07 <Slereah> ret
22:10:08 <Slereah> All good?
22:10:35 <b_jonas> Slereah: let's hope. and the same for the crlf too I guess
22:10:40 <Slereah> yep
22:12:20 <b_jonas> you could use the bios serial port service too, but then you'd get a program that works only on the serial console, which would suck. let's use dos to hide this abstraction.
22:13:30 <Slereah> Is assembler sensitive to linefeeds?
22:13:36 <Slereah> Or can I put it in a big line
22:14:09 <fizzie> Some of them have a command-separating character that lets you put multiple things on a line. (Some of them don't.)
22:14:35 <Slereah> http://pastebin.com/81tMfjaC < it is this anyway, if you want the 21h version
22:18:41 <b_jonas> it is sensitive
22:18:47 <b_jonas> but you can put multiple lines in an irc line
22:18:57 <b_jonas> I'll show in a few minutes
22:20:24 <Slereah> So is jmp 0xabcd equivalent to mov ip, 0xabcd
22:22:17 -!- Sprocklem has joined.
22:25:43 <Bike> have you ever been able to mov into ip
22:25:55 <Slereah> Also if you can't get the value of IP, how does the processor recall the value where it left when using CALL?
22:26:20 <Bike> the processor can do things you can't, so to speak
22:26:45 <Slereah> Are things like CALL actual instructions?
22:26:51 <int-e> yes.
22:26:51 <Slereah> I thought it was assembler shortcuts
22:27:07 <Bike> it might be on some other architecture
22:27:20 <ais523> Slereah: often it's a shortcut for a range of CALL instructions
22:27:26 <ais523> like, CALL NEAR and CALL FAR, or whatever
22:27:49 <Slereah> Oh wait
22:27:55 <Slereah> It pushes the IP on the stack
22:28:03 <Slereah> So I guess you can get the IP
22:28:06 <Slereah> Like
22:28:10 <Slereah> CALL whatever
22:28:16 <Slereah> whatever:
22:28:25 <int-e> on x86, call is an actual instruction. you can read the IP using something like call next; next: pop ax (this can be useful because 'call' uses relative addressing. stuff like that is actually used in x86 dynamically linked libraries)
22:28:27 <fizzie> "call next; next: pop bx" is the conventional "trick", yes.
22:28:28 <Slereah> pop ax
22:29:12 <fizzie> ais523: CALL ABSOLUTE(VARPTR(a%(0)))
22:29:45 <int-e> Even for x86, I should've written "near call" there :)
22:30:12 <ais523> Slereah: I've used a system where the stack was not in normal memory, and could only be manipulated via call and return instructions
22:30:20 <ais523> also it was only 8 entries
22:30:20 <lambdabot> That's Numberwang!
22:31:02 <fizzie> If you're writing regular, non-position-independent code, you can typically "read the IP" (so to say) by using a special symbol -- often $ or . -- that the assembler replaces with the address of the current instruction, incidentally.
22:32:39 <Slereah> ais523 : Damn you
22:32:46 <Slereah> I won't be denied my IP!
22:32:55 <ais523> Slereah: ?
22:33:01 <ais523> that's a really really weird reaction
22:33:05 <ais523> to lambdabot randomly spouting stuff
22:33:12 <ais523> it's not even my fault :-(
22:33:19 <ais523> oh, I see
22:33:22 <ais523> that's not my fault either
22:33:27 <ais523> it's the system's
22:33:32 <ais523> besides, the IP was stored in regular memory
22:33:34 <int-e> it's my fault, though I'd like to put the blame on chrisdone (on #haskell)
22:33:45 <ais523> you could assign to it to do a computed goto if you wanted to
22:34:48 <ais523> seriously, though, I don't like strong maledictions like that when I haven't done anything wrong
22:34:52 <ais523> (or even when I have, really)
22:35:05 <ais523> having used a system with a weird stack is not really something to be damned over
22:35:41 <Slereah> Hm
22:35:46 <Slereah> What thing to try out next
22:35:56 <Slereah> I guess some arithmetics
22:36:11 <Slereah> And then 99!
22:36:18 <ais523> Slereah: seriously, though
22:36:24 <ais523> it's not nice
22:36:35 <Bike> literally can't figure out how to negate a bus
22:36:36 <Slereah> What is?
22:36:44 <ais523> Slereah: damning me over using a weird CPU architecture
22:36:45 <Bike> pretty sure i'm basically idiot satan
22:36:54 <Slereah> Well it was more of a joke
22:36:55 <Bike> Slereah: ais has this thing where he reacts to "damn".
22:37:02 <Slereah> I don't really damn people in seriousness
22:37:06 <ais523> good
22:37:08 <Slereah> Unless be they damn dirty apes
22:37:11 <Slereah> Are you?
22:37:38 <ais523> I don't think so
22:38:15 -!- lambdabot has quit (Quit: bye, bye, numberwang).
22:39:02 <Slereah> I wonder if there's a shorter way to display a byte
22:39:15 <Slereah> Without resorting to interrupts or such
22:40:48 <Phantom_Hoover> ais523, fuck you btw
22:41:17 <ais523> Phantom_Hoover: I don't mind people saying that because it doesn't really make much sense when interpreted literally
22:41:28 <ais523> thus, it's just an entirely generic insult with no substance
22:41:39 <Phantom_Hoover> neither does damn
22:41:59 <Phantom_Hoover> and let's not pretend you have any reason for doing it beyond amusing yourself
22:42:12 -!- lambdabot has joined.
22:42:19 <ais523> Phantom_Hoover: well I care about language not eroding
22:42:30 <ais523> if people keep on using words with meanings entirely different from their actual meanings
22:42:35 <Slereah> ais523
22:42:36 <ais523> eventually communication will become impossible
22:42:39 <Slereah> English isn't eroding
22:42:41 * Bike points and laughs at the prescriptivist
22:42:48 <elliott> that's called the language evolution that has been happening for thousands of years
22:42:51 <Slereah> Languages don't erode when they're living
22:42:52 -!- mrhmouse has quit (Quit: Leaving.).
22:43:02 <Bike> i'm seriously so bad at verilog though.
22:43:03 <ais523> Bike: I formed the possessive of someone's name, that ended with s, via adding just an apostrophe today
22:43:05 <Bike> i'm the one eroding, here.
22:43:07 <elliott> miraculously, communication still appears to be possible, despite the frightening lack of prescriptivists thousands of years ago
22:43:09 <Slereah> If you want to see a language erode go to some village in bumfuck siberia where it's spoken by 3 people
22:43:18 <ais523> and concluded that it was probably correct nowadays, but I felt bad about it
22:43:26 <Bike> stop worrying about stupid shit
22:43:47 <ais523> "Reynolds's" is not something anyone would say nowadays, even though they probably would when I was younger
22:43:57 <Bike> god.
22:44:13 <Bike> elliott: uh i have no actual evidence that you're not actually speaking french and i just don't know it??
22:44:25 <Slereah> ais523, modern language, even when correct, is very much incorrect when compared to old english!
22:45:01 <ais523> Slereah: there's someone from another channel who asks me for help with English from time to time
22:45:14 <Slereah> For instance
22:45:16 <ais523> it's depressing that English is so complex and inconsistent, it makes it quite hard to work out what is right
22:45:24 <Slereah> Did you know that "pea" is terribly wrong
22:45:27 <Bike> what does it mean to be "right".
22:45:30 <Slereah> If you know where it comes from
22:45:37 <ais523> Bike: exactly :-(
22:45:41 <Bike> What is the definition. Where does English come from.
22:45:42 <b_jonas> Slereah's program works in termbot!
22:45:43 <b_jonas> yay
22:45:44 <Bike> the answer is "what people use"
22:45:52 <Bike> (WHOA)
22:45:56 <b_jonas> only irc is throttling it
22:45:59 <ais523> btw, the nose in smiley thing is just me being pointlessly prescriptivist for no reason ;-)
22:46:06 <b_jonas> Slereah++
22:46:10 <Slereah> Pea is from the latin "pisum'
22:46:11 <Bike> no you're still annoying
22:46:19 <Bike> don't do the "just kidding" thing
22:46:23 <Slereah> Which was rendered as "pease" in old english
22:46:25 <Slereah> But
22:46:32 <Slereah> Since it ended in /s/
22:46:36 <Slereah> People thought it was a plural
22:46:42 <Slereah> And decided that the singular was "pea"
22:46:46 <ais523> counting down from 255 at IRC speed seems like a fitting use of #esoteric-blah
22:47:06 <b_jonas> ais523: yes, especially in assembly
22:47:07 <Slereah> heh
22:47:14 <b_jonas> because it would be much easier if we wrote it in c or pascal
22:47:20 <ais523> b_jonas: what are you using to convert the number to decimal?
22:47:22 <Bike> in other news i just noticed that a multiplier is also a shifter.
22:47:34 -!- fr0k has joined.
22:47:37 <Bike> and i can see an engineer's ass crack.
22:47:43 <Bike> not regular crack, unfortunately.
22:47:47 <Slereah> ais523 : first digit is n/100
22:47:57 -!- fr0k has quit (Client Quit).
22:47:57 <Slereah> Second is (n/10)%10
22:47:59 <ais523> ah right, I was wondering whether it was done manually
22:48:03 <Slereah> Last is n%10
22:48:07 <int-e> Slereah: http://int-e.eu/~bf3/tmp/num.nas is what I'd probably write
22:48:33 <Slereah> XORs :o
22:48:39 <Slereah> I will have tto investigate
22:49:24 <Slereah> Wait, what is x XOR x again
22:49:29 <int-e> 0
22:49:30 <Slereah> Isn't it always 0?
22:49:30 <Bike> zero.
22:49:38 <Slereah> Why is it there?
22:49:42 <int-e> xor dx,dx is just a byte shorter than mov dx,0
22:49:43 <Bike> clears the register.
22:49:48 <Slereah> Ah
22:49:53 <Slereah> Faster than mov?
22:49:55 <Bike> welcome to x86 i guess
22:50:08 <int-e> probably the same speed
22:50:20 <b_jonas> ais523: me? ask Slereah
22:50:21 <int-e> but I used to optimize for size, so ...
22:50:36 <ais523> b_jonas: I wasn just asking generally
22:50:39 <ais523> and I'd already got my answer
22:50:48 <ais523> I was thanking Slereah for the answer
22:50:57 <fizzie> The xor-clear is still on the list of recommended idioms, IIRC.
22:51:07 <b_jonas> ais523: you mean in C or pascal? I wouldn't divide, I'd just call printf or write
22:51:15 <Bike> the compilers i still use xor clearing, anywho
22:51:44 <ais523> b_jonas: I was asking what the #esoteric-blah program did, and I'd already got the answer
22:51:56 <Slereah> According to a friend you can do a shorter version with AAM
22:51:57 <ais523> my statement was explaining that I was happy with the answer
22:52:04 <int-e> sure, reducing code size saves memory bandwidth, code cache pressure, all that; and the CPUs are smart enough not to intruduce any artificial data dependencies in this case ('dx depends on the previous value of dx')
22:52:12 <b_jonas> I see
22:52:32 <fizzie> Bike: There was some scenario where it was still faster.
22:52:34 <b_jonas> int-e: actually there's a better reasoning for why using xor dx,dx
22:52:37 <b_jonas> int-e: its
22:53:00 <b_jonas> it's that the amd64 architecture optmization manual explicitly says that xor is the best way to clear the register
22:53:14 <b_jonas> you don't have to guess anything about artificial data dependencies or stuff
22:53:15 <fizzie> "Since zero idioms [like XOR REG, REG] are detected by and removed by the renamer, they have no execution latency," says the Intel optimization manual.
22:53:21 <b_jonas> exactly
22:53:29 <b_jonas> and zeroing an sse register is similar
22:53:56 <fizzie> XOR, SUB, PXOR/VPXOR, PSUBB/W/D/Q, VPSUBB/W/D/Q, XORPS/PD, VXORPS/PD is the full list.
22:54:02 <fizzie> "Use one of these -- when possible."
22:54:55 <b_jonas> fizzie: in that list, does xorps refer to both the sse and mmx insns?
22:55:15 <fizzie> Well, it says XMMREG only, so maybe not MMX.
22:55:31 <b_jonas> meh, ignore that
22:55:33 <b_jonas> I don't care about mmx
22:55:38 <b_jonas> it's obsolate and stupid
22:55:53 -!- Bike_ has joined.
22:56:15 -!- Bike has quit (Disconnected by services).
22:56:20 -!- Bike_ has changed nick to Bike.
22:56:44 <fizzie> Another random tidbit: while "CMP a, 0" and "TEST a, a" produce the same flags, the latter canbe macro-fused more often.
22:57:13 -!- muskrat has joined.
22:57:16 <ais523> I'm trying to remember what TEST does
22:57:19 <b_jonas> what? there's no way they produce the same flag
22:57:19 -!- muskrat has left.
22:57:23 <ais523> is it AND but don't write the result anywhere?
22:57:24 <fizzie> ais523: Non-writing AND.
22:57:25 <b_jonas> ais523: AND but without writing the result
22:57:26 <b_jonas> yes
22:57:32 <ais523> whereas CMP is subtraction that doesn't write the result
22:57:36 <Bike> i guess this is what kmc means when he talks about writing compiler assembly being easy.
22:57:42 <fizzie> b_jonas: "a - 0" and "a & a" are the same value.
22:57:57 <fizzie> (So they'll produce the same flags.)
22:57:59 <int-e> IIRC, and CMP a,0 clears the carry flag; test shouldn't. *goes to check memory*
22:58:04 <b_jonas> fizzie: yes, but TEST affects the eflags differently I think
22:58:11 <b_jonas> int-e: something like that yes
22:58:32 <fizzie> "The OF and CF flags are set to 0."
22:58:33 <Bike> er, reading compiler assembly being hard, and writing assembly being easy. on x86.
22:58:34 <fizzie> (For TEST.)
22:58:44 <Slereah> Apparently a better solution for the digits is n/100, and AAM n
22:58:47 <int-e> No I'm wrong.
22:59:08 <int-e> confused that with inc/dec :)
22:59:30 <b_jonas> yeah, TEST clears CF and AF, and leaves AF undefined
23:00:10 <b_jonas> whereas CMP a,0 would zero CF and AF and OF I Think
23:00:24 <fizzie> Nobody's going to be testing AF.
23:00:33 <b_jonas> but isn't TEST one byte shorter in first place, except maybe for rAX?
23:00:49 <int-e> I had a snippet above that used AF: cmp al, 10; sbb al, 69h; das
23:00:54 <b_jonas> at least one byte
23:01:01 <b_jonas> I mean, the CMP needs an immediate
23:01:15 <b_jonas> which is an extra byte unless it uses the special forms for AL or RAX
23:01:16 <int-e> But there's no place for a 'test' in there :)
23:01:49 <int-e> b_jonas: OF would also be 0. Only AF makes a difference.
23:02:02 -!- nisstyre has joined.
23:02:06 <int-e> And indeed that flag is hardly ever important.
23:03:22 <Slereah> What does JZ do?
23:03:28 <fizzie> "Jump if Zero".
23:03:29 <Slereah> I find 'jump if zero'
23:03:35 <Slereah> But if what register is zero?
23:03:38 <Slereah> CX?
23:03:38 <int-e> "jump if zero flag is set"
23:03:40 <fizzie> If the zero flag is set.
23:03:42 <Slereah> Oh
23:03:47 <int-e> the flag is set by the test instruction.
23:04:18 <b_jonas> anyway, good night now
23:04:25 <Slereah> night
23:04:42 <fizzie> (Curiously enough, there is a special instruction for jumping if CX is zero -- JCXZ/JECXZ/JRCXZ.)
23:05:08 <Slereah> "It is set if an arithmetic result is zero, and reset otherwise."
23:05:09 <Slereah> neat
23:07:10 <Slereah> Let's try rewriting a bit my program
23:08:40 -!- evalj has quit (Remote host closed the connection).
23:13:08 <Slereah> Woo
23:13:10 <Slereah> AAM works
23:15:18 -!- ais523 has quit.
23:15:39 -!- ais523 has joined.
23:15:57 -!- ais523 has quit (Client Quit).
23:16:15 -!- ais523 has joined.
23:20:20 <Bike> my professor used an inconvenient distribution of opcodes and it fills me with rage
23:21:01 <ais523> it's just practice for x86, I think ;-)
23:21:35 <Slereah> Now that I can print numbers
23:21:43 <Slereah> I will try to see what the IP looks like!
23:21:46 <Slereah> If I can get at it
23:22:05 <Slereah> Is the IP 8 bits or 16 bits?
23:22:22 <Bike> the only ops are addition, subtraction, increment, and bit parallel shit. you might think it would be convenient to divide one from the other but nooooo
23:22:22 <ais523> is this IPv1?
23:22:28 -!- nooodl has quit (Quit: Ik ga weg).
23:22:30 <int-e> Slereah: 256 bytes of addressable code wouldn't be enough or most purposes :)
23:22:31 <ais523> oh, instruction pointer
23:22:31 <Bike> it's x86
23:22:34 <ais523> not internet protocol
23:22:37 <int-e> *for
23:22:47 <ais523> on the 8086 CS is 16 bits and IP is 16 bits
23:22:54 <ais523> and you need both to work out which instruction is executing
23:23:01 <Slereah> Well, I guess printing the last octet will be enough
23:23:05 <ais523> but the formula is, IIRC, CS*16+IP
23:23:17 <ais523> so there's much less than 16 actual bits of data there
23:23:22 <int-e> but we're writing COM files where initially, CS=DS=ES=SS
23:23:27 <Slereah> Just to make sure that the next instruction is indeed that instruction
23:28:20 <Slereah> http://pastebin.com/raw.php?i=u694Agh6
23:28:24 <Slereah> Let's see
23:28:32 <Slereah> I get 203, 210 and 217
23:29:06 <Slereah> In between, there is always 3 instructions
23:29:14 <Slereah> But why 7
23:29:40 <fizzie> 7 bytes, presumably.
23:30:02 <Slereah> But why 7 bytes
23:30:03 <int-e> 1 byte pop, 3 bytes for each call
23:30:04 <fizzie> "call test" is 3, "call printint" is another 3, and "pop dx" is 1, at a guess.
23:30:13 <Slereah> Oh, I see
23:30:15 <fizzie> Your disassembler should print the opcode bytes for you.
23:30:35 <Slereah> I guess call test is like
23:30:38 <Slereah> push the address
23:30:44 <Slereah> jump to test
23:30:51 <Slereah> And... somethig something?
23:31:05 <fizzie> That's pretty much it.
23:31:18 <fizzie> Though "push the address" is "push the address of the following instruction".
23:31:25 <Slereah> Ah
23:31:53 <Slereah> But I guess that the CPU has "push the address of the following instruction" as just one opcode?
23:32:12 <int-e> the whole call thing is one instruction
23:32:28 <int-e> (1 byte opcode + 2 bytes address)
23:32:51 <Slereah> Ah right, an address is 16 bytes
23:32:56 <int-e> where the address is relative, so internally rather than "jump to test" it adds that offset to IP.
23:33:53 <Slereah> It is good to know that I can get IP
23:34:00 <Slereah> Once I am good at assembling
23:34:03 <int-e> It's a CISC architecture. There are amazingly complex instructions with compact encodings.
23:34:08 <Slereah> I can write the Worst Code
23:34:39 <Bike> in assembly? the competition is fierce
23:35:10 <Bike> http://www.cs.utah.edu/~elb/folklore/mel.html
23:35:18 <int-e> writing bad assembly code has been automated :)
23:35:24 <Slereah> heh
23:37:31 <Slereah> "Put *that* in Pascal's pipe and smoke it."
23:37:38 <Slereah> I will have to remember that expression
23:37:42 <int-e> Slereah: which assembler are you using now?
23:37:46 <Slereah> x86
23:37:50 <Slereah> On the dosbox
23:38:12 <int-e> nah, I mean to translate the source code
23:38:27 <Slereah> Oh
23:38:30 <Slereah> Flat assembler
23:38:40 <Bike> wasn't it nasm?
23:38:45 <Slereah> Nope
23:38:51 <Slereah> NASM was giving me lip
23:39:00 <Slereah> Flat assembler does the linking itself
23:39:15 <fizzie> You don't need to do any linking for a .com file.
23:39:28 <fizzie> NASM's "-f bin" is just fine for making those.
23:39:39 <Slereah> Eh too late
23:39:46 <Slereah> Flat assembler works fine now
23:40:21 <Slereah> I like this Mel fellow
23:41:45 <int-e> nasm -f bin is the default here.
23:41:50 <Slereah> My first week of computin' school was all "Don't try to be smart, write maintanable code!"
23:41:55 <ais523> huh, it's a weird feeling when the Story of Mel gets linked again and you see all the reactions from people who haven't seen it before
23:41:56 <Slereah> Mel knows the real deal!
23:42:01 <fizzie> It's the default everywhere, I was just being explicit.
23:42:08 <int-e> Slereah: in assembler?
23:42:14 <ais523> and Mel-like behaviour is still useful sometimes, but was more useful then
23:42:16 <Slereah> Nah, in general
23:42:35 <Bike> hehhhhh, teach just described parameters in verilog modules as "like C #defines"
23:42:41 <Slereah> And I'm afraid I'm not that much into computering unfortunately
23:42:41 <int-e> I agree in general, but it starts by ditching assembler except possibly for very small pieces of low-level code.
23:42:44 <Bike> i think that right there is why i loathe this language
23:43:03 <Slereah> So I did not hear of this Mel fellow
23:43:19 <Slereah> I mostly know physics anecdotes!
23:43:45 <int-e> (The important thing about assembly language is to know when not to use it.)
23:44:08 -!- Sgeo has joined.
23:44:20 <Slereah> Well it is certainly not a good idea to use it
23:44:25 <Slereah> But neither is Brainfuck
23:46:04 <ais523> BF Joust begs to differ
23:46:13 <ais523> that game would be less fun in other languages, I feel
23:46:21 <ais523> because it's designed around how brainfuck works
23:46:30 <Slereah> What is BF Joust
23:46:36 <Slereah> (I haven't been there in a while)
23:47:16 <Sprocklem> http://esolangs.org/wiki/BF_Joust
23:47:28 <ais523> the most awesome competitive esolang-based game ever
23:47:32 <ais523> (not that there's much competition)
23:47:46 <ais523> it's become something of a running pastime for this channel, now and again
23:47:55 <int-e> !bfjoust rimfall (>)*31
23:47:59 -!- convicinum has joined.
23:48:02 <EgoBot> ​Score for int-e_rimfall: 0.0
23:48:33 <ais523> int-e: what did you expect?
23:48:37 <ais523> that dies almost as quickly as <
23:48:51 <int-e> ais523: I expected 0.0 :)
23:48:58 <ais523> fair enough
23:49:06 <Bike> obviously we need more competitive crap.
23:49:09 <fizzie> What competition is there except FYB?
23:49:23 -!- convicinum has quit (Client Quit).
23:49:30 <ais523> !bfjoust thirty (>)*29(+)*100(+.)*50000
23:49:32 <Bike> i guess dueling fungepointers has probably been thought of
23:49:32 <EgoBot> ​Score for ais523_thirty: 0.0
23:49:40 <ais523> fizzie: there's golf, I guess
23:50:14 <fizzie> Bike: There's vague rumours about "BeGlad" (Befunge Gladiators), which is reportedly built on Befunge-97 of all things.
23:50:29 <ais523> thirty beats almost everything perfectly on tape length 30, except omnipotence (loses) and zeroer (win+draw)
23:51:08 <Slereah> Wouldn't the Rube language be perfect for game-things?
23:51:41 <ais523> oh, right
23:51:41 <Bike> dasklickenklacker
23:51:44 <ais523> Rubicon
23:51:47 <ais523> that's awesome too
23:51:59 <ais523> http://kevan.org/rubicon/ (requires JavaScript)
23:52:04 <ais523> err, Java
23:52:08 <ais523> wow, I haven't rubiconned for ages
23:52:23 <Bike> i'm going to continue thinking of the marathon mod and you can't stop me
23:52:26 <fizzie> Robozzle might almost-count.
23:53:10 <fizzie> !bfjoust just_curious (>)*8(>(+)*96(+.)*128)*21
23:53:13 <EgoBot> ​Score for fizzie_just_curious: 5.9
23:53:39 <fizzie> Are there many loopless "serious" BF Joust programs?
23:54:09 <ais523> fizzie: not many; there was a lock+full tape clear that someone else submitted that did decently
23:54:19 <ais523> but you get too much benefit from skipping blank cells
23:54:20 <kmc> Slereah: there are many good reasons to use assembly language...
23:54:47 <kmc> they aren't situations most programmers encounter often, though
23:55:27 <kmc> also even if you're not writing assembly, being able to READ it is incredibly useful
23:56:01 <kmc> for debugging or for seeing how your compiler is optimizing things
23:56:33 <kmc> (compilers are smart so the solution is usually to change the code to help the compiler, not to rewrite it in assembly)
23:59:10 <ais523> kmc: the question "how would you optimize this program?" came up in comp.lang.c
23:59:17 <ais523> I managed to beat both gcc -Os and clang -Os on size with my own asm
23:59:19 <Bike> ok. xilinx tools detect finite state machines during optimization. i think something has gone very wrong here.
23:59:43 <kmc> nice :)
←2013-11-21 2013-11-22 2013-11-23→ ↑2013 ↑all