< 1567900963 938899 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :b_jonas: how about 239 subs, named 01,02...EE,EF ? < 1567901015 741489 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :therefore, easier to make a stack with < 1567901835 994652 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`` printf %s 11101001011110101100010111111100 | crc32 /dev/stdin < 1567901837 197691 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :badc0c0a < 1567902027 791741 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :lol < 1567902051 393624 :imode2!~imode@unaffiliated/imode JOIN :#esoteric < 1567902475 3558 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(It was a fun little exercise: start with a desired CRC32 value, then compute that string of 0s and 1s) < 1567902524 544498 :int-e!~noone@int-e.eu PRIVMSG #esoteric :And don't use brute force; that's feasible, but boring. :) < 1567902590 864446 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :this is why crc32 is not a cryptographic hash < 1567902653 956236 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Nor CRC64, nor CRC128 if that exists. < 1567902702 740053 :imode2!~imode@unaffiliated/imode QUIT :Quit: Leaving < 1567903064 485209 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :so, not yet in repo, but the subroutines are literally named 01 through EF now < 1567903298 53532 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :now it's in the repo < 1567903828 12188 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :int-e: there's an IOCCC entry that modifies a file so that it contains its crc checksum formatted to text, I think < 1567903842 593536 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :but yes, it's linear < 1567903954 502364 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: I don't see why that would be better that just using absolute addresses inside those subroutines. the point of a stack would be that (a) it would let you use less memory than you need for all subs, (b) pass arguments so you can call the same subroutine from multiple call sites easily, (c) allow recursion. you might not care about all of that, in which case you just put the local variables of < 1567903960 507810 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :each of the subroutines to separate memory areas < 1567904022 521057 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :but even then my main complaint is that since your interpreter restricts memory access to the other parts of the memory, it's hard to pass arguments or return values to other subroutines, you have to use the global variables for it, in which case why do you not just put everything in global variables and get rid of the address translation instead? < 1567904055 745572 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: however, if you want to limit the names of the subroutines to make storing the table of their code addresses simpler, that I could understand, but it is sort of restrictive < 1567904071 314116 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :would just force the bookkeeping on the programmer < 1567904122 691454 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :anyway, I don't know what you want to do with the interpreter, and you'll have to decide that < 1567904129 9319 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i'll get rid of the address translation and make everything global < 1567904140 235646 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :int-e: right, it's a linear checksum, so brute force is way overkill < 1567904399 21340 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :linear reminds me, https://www.perlmonks.com/?node_id=940327 < 1567904645 245245 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :that one is also a problem that's linear over the GF(2) field, you may try to solve it < 1567904664 565761 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :b_jonas: better? < 1567904677 44918 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :brb gotta eat < 1567904799 441766 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :cpressey: ^ puzzle thingy, you might be interested as well < 1567904850 531551 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: what is better? < 1567904951 974838 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :fizzie: So according to the musl people, there's pretty much no cross-libc ABI. < 1567904976 152228 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If you compile your program with musl's crt.o it'll work with musl's ld.so/libc, and the same for glibc. < 1567904983 387168 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This seems like a bizarro situation to me. < 1567905008 80742 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Surely there *is* a de facto ABI, which is whatever programs compiled with gcc and its crt.o do. < 1567905027 460559 :Sgeo__!~Sgeo@ool-18b98995.dyn.optonline.net QUIT :Read error: Connection reset by peer < 1567905038 276324 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But there are a lot of compatiblity issues across even versions of glibc, so who knows what that means. < 1567905051 767132 :Sgeo__!~Sgeo@ool-18b98995.dyn.optonline.net JOIN :#esoteric < 1567905069 751202 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In practice I need to emulate what glibc's crt.o does, I guess. Which is calling __libc_start_main with rdx as an argument. < 1567905100 555976 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Note that Go *doesn't* call libc_start_main, so maybe Go programs only work by accident, since libc doesn't get to do its initialization in the usual way. < 1567905338 78184 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :That's odd. < 1567905368 277719 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I know there's definitely a nonzero amount of things that go wrong if you write a program that just starts at _start but still links with (g)libc and calls into it. < 1567905375 82577 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I don't remember specific examples, but there were some. < 1567905412 124356 :xkapastel!uid17782@gateway/web/irccloud.com/x-xuyclhxtwdjynses QUIT :Quit: Connection closed for inactivity < 1567905434 20807 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :"like exposing the list of TLS-providing modules, synchronizing changes to it, providing dl_iterate_phdr (access to unwind information for all libraries present), providing dlopen/dlsym/etc," < 1567905610 806957 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :b_jonas: git commit -a -m "Removed a broken local addressing scheme." < 1567905769 63305 :adu!~ajr@pool-173-73-86-191.washdc.fios.verizon.net QUIT :Quit: adu < 1567906052 615232 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Go was in the top 10 (just barely, on spot 10) in the IEEE Spectrum's 2019 programming language popularity contest update. < 1567906157 602374 :tromp!~tromp@2a02:a210:1585:3200:103d:4f2b:fe34:4ae1 JOIN :#esoteric < 1567906295 849408 :tromp_!~tromp@2a02:a210:1585:3200:1d0b:a678:27f6:f1b4 QUIT :Ping timeout: 248 seconds < 1567906403 465155 :int-e!~noone@int-e.eu PRIVMSG #esoteric :fizzie: I was happier about go when I didn't know that it resorted to reflection for elementary things like sorting. < 1567906500 645178 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :int-e: You can also use code generation. < 1567906534 868259 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Yay. C++ templates but without official language support. < 1567906548 149799 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`grwp negativ < 1567906549 176934 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :absolute value:The absolute value of a number, also known as its cosign, is its distance from zero regardless of direction. It shouldn't be negative, but Sgeo is trying to break maths. < 1567906554 5892 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think there is some official language support? < 1567906606 691 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :sounds like Sgeo < 1567906607 245186 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Is there now? I thought not... I thought it was some kind of 3rd party preprocessor. Maybe I'm wrong. < 1567906659 609266 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :There's something called "go generate". < 1567906666 669402 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Maybe that's official tool support, not language support. < 1567906711 919520 :int-e!~noone@int-e.eu PRIVMSG #esoteric :'Generate runs commands described by directives within existing files.' < 1567906782 13506 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'd use Go except I don't want garbage collection. < 1567906841 511767 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :is go an esolang? < 1567906858 457199 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Heh. < 1567906880 139155 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :did you write it? < 1567906884 478794 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Lykaina: surprisingly we often end up discussing mainstream languages here as well. < 1567906893 878038 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :oh < 1567906901 749204 :int-e!~noone@int-e.eu PRIVMSG #esoteric :It's Google's language called "Go". < 1567907013 188760 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Did you learn programming in 6502 or in Glulx at all? Or some other one? < 1567907045 839788 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :IIRC, Sgeo and I used to play Go between classes at uni. < 1567907077 785355 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Do you think assemblers should generate instructions like "mov $60, %eax" when you type "mov $60, %rax"? < 1567907096 784395 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The bytes generated are already ambiguous and the assembler has to pick an encoding. < 1567907147 687194 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Or is there an observable difference between moving a 32-bit immediate into eax and rax? < 1567907183 352591 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I don't know a lot about modern x86 assembly < 1567907198 396766 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :So, I don't know what the encoding is. < 1567907216 332218 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: I'd be worried about operand size mismatches and resulting pipeline stalls, but I don't know whether that worry is justified. < 1567907246 704290 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm, what do you mean? < 1567907307 300442 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :At least in 6502, the standard syntax does not have a difference for zero page or absolute, I think, and that affects the operand size and the speed too. But NESASM/MagicKit requires < to indicate zero page addressing, which I think is better than the standard syntax. < 1567907327 106384 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: If you load eax and then use rax, does that confuse the processor? Or doesn't it because it always deals with the whole 64 bit register anyway? < 1567907386 585949 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: I recall that loading ax and then using eax caused pipeline stalls in earlier processors. Of course there the story was different; loading ax would preserve the top half of eax. < 1567907388 641007 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I see. You're thinking maybe something just looks at the instruction operand size and not the effect of the instruction. < 1567907425 77412 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think loading 32-bit immediates into 64-bit registers is such a common idiom that I'd be surprised. But maybe there are effects in other cases. < 1567907436 804041 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I think modern x86 is too confusing, and that MMIX is better. < 1567907441 413276 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Also, loading ax *still* preserves the top 3/4 of rax, I found out in here the other day. < 1567907457 131888 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :zzo38: I'd happily use a MMIX processor if you sent me one in the mail. < 1567907502 699152 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: Yeah it's probably fine... the fact that loading a 32 bit register clears the upper half cures the reason for those stalls (namely, that outputs of two instructions would potentially have to be merged). < 1567907513 801851 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(Old x86 also is less messy than modern x86, I think.) < 1567907528 713173 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` llvm-mc < 1567907530 21170 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/hackenv/bin/`: line 5: llvm-mc: command not found < 1567907621 888875 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Does HackEso have a convenient way to type instructions and see what they assemble to, or type machine code and see what it disassembles to? < 1567907633 959910 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :gtg < 1567907664 950890 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :before i accidently say something someone doesn't want me to < 1567907670 2211 :Lykaina!~lyka@unaffiliated/schrodingerscat QUIT :Quit: leaving < 1567907689 25476 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: Anyway. I don't know. For $60 I'd hope for a mov imm8, r/m64 operation, I think, and then realize that that doesn't exist, then spend the rest of the day wondering why that is. < 1567907772 93380 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh boy. You're using Intel names with AT&T order. < 1567907807 207328 :int-e!~noone@int-e.eu PRIVMSG #esoteric :More productively, what do existing compilers/assemblers (llvm, gcc, as) do the processor software optimization manuals have anything to say on that? < 1567907872 212989 :int-e!~noone@int-e.eu PRIVMSG #esoteric :oh, nice contraction. s/do the/do, and what do/ < 1567907901 73223 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: I have no excuse, but the fact that an immediate was involved saves me :P < 1567908046 940070 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` echo 'int foo() { return 60; }' | gcc -O2 -c -x c -o /tmp/test.o - && objdump -d /tmp/test.o | grep -P '^ *\d+:' < 1567908049 617959 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​ 0: b8 3c 00 00 00 mov $0x3c,%eax \ 5: c3 retq < 1567908150 411027 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm looking at the Intel optimization guide. < 1567908156 376370 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :"12.2.2 Use Extra Registers to Reduce Register Pressure" < 1567908158 410230 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Thintel. < 1567908172 348678 :int-e!~noone@int-e.eu PRIVMSG #esoteric :DEEP < 1567908220 831668 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :didn't sparc attempt to solve register pressure by doing the opposite? < 1567908247 152493 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :I mean, I guess register windows give you extra registers, but they're windowed < 1567908267 114096 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :"Note that in Intel 64 architecture, an update to the lower 32 bits of a 64 bit integer register is architecturally defined to zero extend the upper 32 bits. While this action may be logically viewed as a 32 bit update, it is really a 64 bit update (and therefore does not cause a partial stall)." < 1567908583 916996 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :int-e: Hmm, x86 has "ADD r/m64, imm8" < 1567908589 986130 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Which I probably knew but forgot about. < 1567908599 379291 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That makes your complaint more justified. < 1567908604 417896 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :By complaint I mean wonder. < 1567908656 266601 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: Yes, it has that for all arithmetic operations, but not for loads. < 1567908694 500330 :int-e!~noone@int-e.eu PRIVMSG #esoteric :And it has an push imm8 as well. < 1567908704 91664 :int-e!~noone@int-e.eu PRIVMSG #esoteric :s/an/a/ < 1567908756 137826 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Yes, that's an odd. < 1567908776 421390 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Often you can get by with the arithmetic ones, as long as you have a known starting point. < 1567908782 785922 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` echo 'mov $60, %eax' | as -o /tmp/test.o - && objdump -d /tmp/test.o | grep -P '^ *\d+:' < 1567908783 939091 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​ 0: b8 3c 00 00 00 mov $0x3c,%eax < 1567908786 626640 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` echo 'xor %eax, %eax; or $60, %eax' | as -o /tmp/test.o - && objdump -d /tmp/test.o | grep -P '^ *\d+:' < 1567908787 632654 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​ 0: 31 c0 xor %eax,%eax \ 2: 83 c8 3c or $0x3c,%eax < 1567908791 829111 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh well. < 1567908820 743280 :int-e!~noone@int-e.eu PRIVMSG #esoteric :shachaf: so ironically, xor rax,rax; add rax,60 is 5 bytes, one byte shorter than the mov eax,60 you'd envision. ... right, just like that < 1567908857 325729 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(for a 64bit target) < 1567908906 550965 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :You mean the one with the rex prefix? Because it's the same size otherwise. < 1567908922 764408 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(As seen just above.) < 1567908928 40168 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` echo 'xor %rax, %rax; or $60, %eax' | as -o /tmp/test.o - && objdump -d /tmp/test.o | grep -P '^ *\d+:' | sed 's/^[^\t]*\t//; s/ *\t/: /g' < 1567908929 180275 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :48 31 c0: xor %rax,%rax \ 83 c8 3c: or $0x3c,%eax < 1567908937 2979 :int-e!~noone@int-e.eu PRIVMSG #esoteric :mmm. < 1567908962 807766 :int-e!~noone@int-e.eu PRIVMSG #esoteric :you're right, I made a wrong assumption about how 64 bit mode would work. < 1567909034 880634 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`mkx bin/as-encoding//echo "$1" | as -o /tmp/out.o - && objdump -d /tmp/out.o | grep -P '^ *\d+:' | sed 's/^[^\t]*\t//; s/ *\t/: /g' < 1567909036 714496 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :bin/as-encoding < 1567909043 914097 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`as-encoding mov %rax, %rbx < 1567909044 824570 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :48 89 c3: mov %rax,%rbx < 1567909058 474836 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, \d is wrong, isn't it. < 1567909079 869897 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`mkx bin/as-encoding//echo "$1" | as -o /tmp/out.o - && objdump -d /tmp/out.o | grep -P '^ *[0-9a-f]+:' | sed 's/^[^\t]*\t//; s/ *\t/: /g' < 1567909085 287623 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :bin/as-encoding < 1567909136 483742 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`as-encoding mov (%rbp), %rdi < 1567909137 388198 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :48 8b 7d 00: mov 0x0(%rbp),%rdi < 1567909165 78098 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`asm mov eax, 60 < 1567909166 92212 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: b8 3c 00 00 00 mov eax,0x3c < 1567909168 871654 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :There was that one already. < 1567909176 542078 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :It's an intel variant, though. < 1567909177 456270 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`as-encoding mov (%r13), %rdi < 1567909178 444477 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :49 8b 7d 00: mov 0x0(%r13),%rdi < 1567909185 158426 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, that one's probably better. < 1567909191 255492 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I did ask! < 1567909192 80521 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`cat bin/asm < 1567909192 499736 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`asm mov rax, 60 < 1567909192 754691 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​#!/bin/sh \ echo "$1" > /tmp/asm.s; for o in ',' '-msyntax=intel -mnaked-reg,-M intel'; do if as ${o%,*} /tmp/asm.s -o /tmp/asm.o 2>>/tmp/asm.err; then objdump ${o#*,} -d --insn-width=20 /tmp/asm.o | sed -e "1,/0000000000000000/d" | perl -pe 'if (/^\s*(\w+:)\s*((?:\w\w )+)\s*(\S.*)$/) { ($a,$b,$c) = ($1,$2,$3); $_ = "$a $b ".($c =~ s/\s+/ /rg)."\n"; }'; exit; fi; done; cat /tmp/asm.err < 1567909193 516794 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 c7 c0 3c 00 00 00 mov rax,0x3c < 1567909217 377901 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm mov rdi, [r13]; mov rdi, [r15] < 1567909220 871066 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 49 8b 7d 00 mov rdi,QWORD PTR [r13+0x0] \ 4: 49 8b 3f mov rdi,QWORD PTR [r15] < 1567909250 169941 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`asm mov rax, 6061626364656667h < 1567909251 215962 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: too many memory references for `mov' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: junk `h' after expression < 1567909260 735994 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`asm mov rax, 0x6061626364656667 < 1567909261 865782 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 b8 67 66 65 64 63 62 61 60 movabs rax,0x6061626364656667 < 1567909297 865977 :int-e!~noone@int-e.eu PRIVMSG #esoteric :is `asm` based on `nasm`? < 1567909307 103751 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :No, it's still as. < 1567909333 372647 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm mov $60, %rax < 1567909334 740630 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 c7 c0 3c 00 00 00 mov $0x3c,%rax < 1567909335 409147 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Actually, looks like it guesses. < 1567909343 850492 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh boy, it tries both syntaxes. < 1567909353 924175 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :An assembler with a conditional? as if! < 1567909369 887872 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :It tries as + objdump without options, and if that fails it tries "-msyntax=intel -mnaked-reg" for as and "-M intel" for objdump. < 1567909374 303873 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :That's kind of clever. < 1567909421 374920 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm movb $60, 60 < 1567909422 260846 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: c6 04 25 3c 00 00 00 3c movb $0x3c,0x3c < 1567909443 488318 :int-e!~noone@int-e.eu PRIVMSG #esoteric :now wth is that c7 c0 instruction. < 1567909486 360751 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :C7 /0 MOV r/m32, imm32 < 1567909492 233245 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :MOV r/m64, imm32? < 1567909494 102419 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`asm movd $60, (%rsi) < 1567909495 101192 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `movd' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `movd' < 1567909513 358821 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`asm movq $60, (%rsi) < 1567909514 308187 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 c7 06 3c 00 00 00 movq $0x3c,(%rsi) < 1567909521 476039 :int-e!~noone@int-e.eu PRIVMSG #esoteric :ah. < 1567909532 463274 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`cwlprits bin/asm < 1567909534 364030 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :No output. < 1567909537 701169 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :uh < 1567909540 370003 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`culprits bin/asm < 1567909542 123485 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :fizzïe fizzïe fizzïe fizzïe fizzïe fizzïe fizzïe fizzïe fizzïe fizzïe shachäf shachäf ais52̈3 shachäf shachäf ais52̈3 ais52̈3 ais52̈3 ais52̈3 ais52̈3 ais52̈3 ais52̈3 ais52̈3 ais52̈3 Gregör Gregör < 1567909556 225184 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Can you add a feature where it prints the encoding in octal? < 1567909597 753632 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I guess that'd be handy for the ModR/M byte. < 1567909611 865184 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Not going to start doing that right now though. < 1567909636 772203 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's handy for a bunch of other things too. < 1567909667 197125 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Anything that names a register, for instance. < 1567909668 109762 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`asm movq $0x6061626364656667, (%rsi) < 1567909669 88610 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 89 34 25 00 00 00 00 mov QWORD PTR ds:0x0,rsi < 1567909695 936669 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`asm movq $6061626364656667, (%rsi) < 1567909697 40966 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 89 34 25 00 00 00 00 mov QWORD PTR ds:0x0,rsi < 1567909722 841715 :int-e!~noone@int-e.eu PRIVMSG #esoteric :that's confusing. < 1567909732 366237 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's confusing because it's treating it as Intel syntax. < 1567909760 314051 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :And treating the $ as part of a symbol? < 1567909764 495254 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Since it fails as AT&T syntax because the only instruction with a 64-bit immediate is mov r64, imm64 < 1567909764 685983 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`asm movq [rsi], 0x6061626364656667 < 1567909765 552318 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: invalid char '[' beginning operand 1 `[rsi]' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `movq' < 1567909769 341796 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Right. < 1567909782 170159 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That's unfortunate. < 1567909792 236745 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`as-encoding movq $6061626364656667, (%rsi) < 1567909793 135692 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​{standard input}: Assembler messages: \ {standard input}:1: Error: operand size mismatch for `movq' < 1567909808 17861 :int-e!~noone@int-e.eu PRIVMSG #esoteric :fair enough < 1567909824 123381 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I guess that's kind of an issue with all these "just try all the ways" things, there's a similar thing with the C one that tries with and without a main wrapper. < 1567909827 587025 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`asm mov eax, 60; mov rax, 60 < 1567909829 871850 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: b8 3c 00 00 00 mov eax,0x3c \ 5: 48 c7 c0 3c 00 00 00 mov rax,0x3c < 1567909831 865607 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Actually, why *is* that second one REX.W + C7 /0, and not REX.W + B8+ rd? < 1567909849 330902 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Oh, because that's the imm64. < 1567909856 794880 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Right. < 1567909858 789550 :int-e!~noone@int-e.eu PRIVMSG #esoteric :yeah it's shorter this way < 1567909876 373089 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :What a nice and orthogonal instruction set. < 1567909894 263666 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I've forgotten what /0 means. < 1567909898 750369 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Yes, it's a thing of pure beauty. < 1567909900 824805 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Is it the reg part of the modr/m byte? < 1567909921 459546 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Yes. < 1567909926 232854 :int-e!~noone@int-e.eu PRIVMSG #esoteric :yes, /0 puts something in the mod r/m byte < 1567909939 117964 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I've also forgotten what rd means. < 1567909978 392500 :int-e!~noone@int-e.eu PRIVMSG #esoteric :destination register? < 1567909983 333177 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I dunno. < 1567909986 43973 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :It's "+rd", means adding a register code for a doubleword register to the byte on the left. < 1567910005 956158 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :The pages just seem to format it with the + closer to the byte it gets added to. < 1567910014 641926 :int-e!~noone@int-e.eu PRIVMSG #esoteric :But B8...BF are all mov rd, imm32 instructions < 1567910049 54194 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Why do they say "REX.W +"? < 1567910058 266281 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`asm inc rax < 1567910059 327430 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 ff c0 inc rax < 1567910062 188588 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Yes, and "B0+ rb" makes B0 .. B7 ones that are r8, imm8 ones. < 1567910079 713217 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This is all way simpler in base 8, hth. < 1567910081 620639 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Well, not strictly imm8. But the "d" is for size, not for "destination". < 1567910106 133126 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :They say "REX.W +" because it was the 64-bit variant, which needs the REX prefix with the W bit set. < 1567910109 176396 :int-e!~noone@int-e.eu PRIVMSG #esoteric :fizzie: yeah I got that a moment too late < 1567910120 151169 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But the + just means concatenation there? < 1567910129 260196 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Yes. < 1567910135 674582 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Or does it mean you add (or) the other REX bits or something < 1567910136 721342 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :? < 1567910137 780943 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :OK. < 1567910139 236931 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :The + that means "add to the value" is typeset slightly differently. < 1567910144 674182 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh. < 1567910148 360993 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I was looking at https://www.felixcloutier.com/x86/mov < 1567910179 222309 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Well, by "typeset" I really meant the whitespacing, which they've accurately reproduced. < 1567910186 748956 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :The symbol itself looks the same. < 1567910223 669164 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :But the spacing looks like "REX.W + B8+ rd" so you can arguably tell what kind of + it is. < 1567910257 7728 :int-e!~noone@int-e.eu PRIVMSG #esoteric :the space before the "rd" is a bit odd < 1567910292 511206 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But e.g. https://www.felixcloutier.com/x86/jmp just says "REX.W FF" < 1567910293 358755 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :It's odd especially because the interpretation guide says: "+rb, +rw, +rd, +ro". < 1567910310 155176 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(And so does the Intel manual, which I've now opened.) < 1567910322 726506 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :shachaf: My version of the Intel manual says "REX.W + FF /5". < 1567910327 663962 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :For JMP m16:64, anyway. < 1567910372 930314 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Really? Which version? < 1567910375 695570 :int-e!~noone@int-e.eu PRIVMSG #esoteric :m16:64, hmm. < 1567910379 567366 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf PDF page 1072 says REX.W FF < 1567910396 150887 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I'm not sure where the version number is in this thing. < 1567910435 59186 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I know what the REX.W means but I was confusil about the +. < 1567910469 839366 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :It says "Order Number: 325462-041US" and "December 2011" on the first page. < 1567910484 846943 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :So they have broken it somewhere between 2011 and 2019. < 1567910533 904547 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Although arguably the "+"-free version is more logical, because that's how concatenation works most of the time there. < 1567910555 579902 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Hmm the version that I downloaded in June says REX.W FF /5 < 1567910556 921727 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But this manual still has +s for mov. < 1567910615 32717 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I suspect I downloaded the 2011 version in 2011, and have not updated it since then. < 1567910624 99718 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :the intel manuals often use illogical notation elsewhere too, in the pseudocode that describes instruction semantics < 1567910635 251655 :int-e!~noone@int-e.eu PRIVMSG #esoteric :but for the mov it has, REX.W + B8+ rd io < 1567910637 499175 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :it's a confusing manual < 1567910766 760520 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :or maybe a confusil manual < 1567910771 488364 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :or a confus manual < 1567910773 665806 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :dunno < 1567910890 682340 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :There was some specific overlong encoding which objdump represents using a pseudoregister eiz/riz to represent zero. < 1567910898 562103 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`asm .byte 0x88, 0x04, 0xa0 < 1567910899 947467 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 88 04 a0 mov %al,(%rax,%riz,4) < 1567910922 138862 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :The ones with a SIB byte that specify the row that doesn't do any scaling. < 1567910948 930296 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`asm .byte 0x88, 0x04, 0xe0 < 1567910949 876373 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 88 04 e0 mov %al,(%rax,%riz,8) < 1567910980 467117 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Gives it a way to disambiguate, but I'm not sure how useful that is because I'm pretty sure there still some ambiguous cases where different bytes give the same text. < 1567910984 655916 :int-e!~noone@int-e.eu PRIVMSG #esoteric :ACTION blinks < 1567910997 321848 :int-e!~noone@int-e.eu PRIVMSG #esoteric :There's a %riz? < 1567911004 174073 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Not really. < 1567911026 656270 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Oh, you explained it there. < 1567911029 747377 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :But there's a SIB byte encoding for each of the scaling levels (1, 2, 4, 8) that doesn't actually add a scaled register. < 1567911043 867387 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`asm .byte 0x88, 0x04, 0x20 < 1567911044 936845 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 88 04 20 mov %al,(%rax,%riz,1) < 1567911065 195108 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`asm .byte 0x88, 0x00 < 1567911066 469783 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 88 00 mov %al,(%rax) < 1567911070 408401 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net JOIN :#esoteric < 1567911111 282422 :int-e!~noone@int-e.eu PRIVMSG #esoteric :fizzie: do they have that in 32 bit mode too? < 1567911121 674007 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Yes, it's just called %eiz. < 1567911133 296701 :int-e!~noone@int-e.eu PRIVMSG #esoteric :fun. < 1567911169 233094 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :ndisasm shows both 88 04 20 and 88 00 as just `mov [rax], al`. < 1567911261 298773 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's very convenient that x86 has a 3-operand add. < 1567911300 740411 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :On the other hand: < 1567911301 788499 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`asm .byte 0x88, 0xc2, 0x8a, 0xd0 < 1567911304 864143 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 88 c2 mov %al,%dl \ 2: 8a d0 mov %al,%dl < 1567911322 496890 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :There's no disambiguating that thing. < 1567911352 117965 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :But maybe there was some more specific way of showing it with eiz/riz than simply making it look different. < 1567911357 197000 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :s/way/reason/ < 1567911397 533307 :int-e!~noone@int-e.eu PRIVMSG #esoteric :fizzie: well, those encodings of mov dl, al have the same size < 1567911438 785649 :int-e!~noone@int-e.eu PRIVMSG #esoteric :And as I understood it, the %riz actually makes a difference (since it adds a SIB). < 1567911447 3379 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :is there a service that lets you run short programs on lots of different x86 architectures/families? < 1567911459 724749 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :would be interesting to see if either encoding is uniformly faster < 1567911476 636547 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Oh, nitpick: "SIB = scaled index byte", so "SIB byte" is redundant. < 1567911481 846416 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`asm .byte 0xb0, 0xff, 0xc6, 0xc0, 0xff < 1567911485 382641 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: b0 ff mov $0xff,%al \ 2: c6 c0 ff mov $0xff,%al < 1567911485 981926 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :int-e: Those aren't the same size. < 1567911503 690758 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm .byte 0110, 0146, 0213, 0364 < 1567911504 552547 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 rex.W \ 1: 66 8b f4 mov %sp,%si < 1567911512 124581 :int-e!~noone@int-e.eu PRIVMSG #esoteric :fizzie: hmm, good point. < 1567911533 840918 :int-e!~noone@int-e.eu PRIVMSG #esoteric :does as even accept the riz stuff... < 1567911540 969494 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`asm mov %al,(%rax,%riz,1) < 1567911542 252731 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: bad register name `%riz' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: missing ')' \ /tmp/asm.s:1: Error: bad expression \ /tmp/asm.s:1: Error: junk `riz' after expression < 1567911550 518482 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I think it's not accepted on the input side. < 1567911570 488220 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :It may just be an objdump peculiarity. < 1567911578 437851 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Should my assembler have different names for different register sizes? < 1567911590 671179 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :That's another thing, why aren't these dump things ever round-trippable? < 1567911617 80135 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Your assembler/disassembler pair should have the property that (assemble . disassemble) is identity. < 1567911642 479532 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I wasn't going to have a disassmller, which lets me sidestep this requirement. < 1567911662 339303 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Do you think the assembler should always use an unambiguous name for unusual encodings? < 1567911673 895167 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I think it should add a footnote. < 1567911687 399285 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Or possibly a hover-tip. < 1567911698 591646 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Oh, I was still in the disassembler mindset, sorry. < 1567911717 289722 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I guess that could apply to an assembler as well, if it reads in a footnote. < 1567911734 656701 :int-e!~noone@int-e.eu PRIVMSG #esoteric :. o O ( mov dl, al ) < 1567911767 766818 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm .byte 0213, 0303; .byte 0211, 0330 < 1567911768 925092 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 8b c3 mov %ebx,%eax \ 2: 89 d8 mov %ebx,%eax < 1567911788 89866 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :fizzie: Well, really I meant disassembler. < 1567911802 260664 :int-e!~noone@int-e.eu PRIVMSG #esoteric :It's a tricky question what a /sane/ syntax for this would look like. < 1567911806 406979 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Disassembling the above two the same way doesn't seem that bad to me. < 1567911853 955030 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :int-e: `mov 𝔞𝔩, 𝕕𝕝` vs. `mov 𝕒𝕝, 𝔡𝔩`. < 1567911856 506656 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's a very niche case where you want to distinguish them. And different versions of an assembler could switch between encodings, so you'd be breaking some backwards compatibility by writing one of them out as nonstandard. < 1567911862 32763 :FreeFull!~freefull@defocus/sausage-lover QUIT : < 1567911864 263208 :int-e!~noone@int-e.eu PRIVMSG #esoteric :fizzie: I see boxes :) < 1567911878 855705 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Maybe that's not so bad, and it wouldn't actually break compatibility meaningfully to have a default. < 1567911884 178436 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Maybe it'll work at http://esolangs.org/logs/2019-09-08.html#lif < 1567911917 976249 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm .byte 0211, 0303; .byte 0213, 0330 < 1567911918 910254 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 89 c3 mov %eax,%ebx \ 2: 8b d8 mov %eax,%ebx < 1567911929 48027 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm mov %eax, %ebx < 1567911929 988236 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 89 c3 mov %eax,%ebx < 1567911933 299454 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm mov ebx, eax < 1567911934 376480 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 89 c3 mov ebx,eax < 1567911942 894127 :int-e!~noone@int-e.eu PRIVMSG #esoteric :fizzie: yeah it works in logs (I had made my way to tunes) < 1567911947 928513 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I guess I should use the 0x89 encoding. < 1567911979 762234 :int-e!~noone@int-e.eu PRIVMSG #esoteric :maybe just put appendices on the mnemonic... mov.mr and mov.rm < 1567911984 737673 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :shachaf: I wonder if they settled on that just because 0x89 < 0x8b. < 1567911987 421199 :Sgeo_!~Sgeo@ool-18b98995.dyn.optonline.net JOIN :#esoteric < 1567912014 485371 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Wait, those are the same assembler so it's not surprising that both syntaxes used the same encoding. < 1567912024 478461 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :For some reason I was thinking it was nasm because it was mentioned earlier. < 1567912055 538626 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :nasm does use 89 as well though. < 1567912081 479159 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :godbolt.org has a checkbox to show the instruction encoding rather than just assembly. < 1567912087 607736 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But it doesn't work when you set the language to assembly! < 1567912098 479099 :int-e!~noone@int-e.eu PRIVMSG #esoteric :I seem to recall that some people use variant instruction encodings for watermarking software. < 1567912106 802392 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :int-e: That suffix thing rings a bell, I think there was a university course that did that for an x86 variant. < 1567912117 808871 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I opened an issue: https://github.com/mattgodbolt/compiler-explorer/issues/1567 < 1567912119 418581 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :That it used as the target, it was a course on compilers. < 1567912135 910382 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I tried to fix it locally but then it needed a new version of node.js to build so I gave up on it. < 1567912166 59094 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Oh, is Godbolt just their surname? < 1567912184 300762 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes. < 1567912185 906797 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I thought it was reference to a thunder deity or something. < 1567912189 941950 :int-e!~noone@int-e.eu PRIVMSG #esoteric :In any case, as much as I'd like a round-trippable disassembler/assembler, I also want a noiseless disassembler that just conveys the semantics. < 1567912200 143489 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Though their Twitter nick is now "Matt Compiler-Explorer". < 1567912207 2612 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Heh. < 1567912210 64173 :int-e!~noone@int-e.eu PRIVMSG #esoteric :So round-trippability should be an option, probably not even enabled by default. < 1567912236 787645 :Sgeo__!~Sgeo@ool-18b98995.dyn.optonline.net QUIT :Ping timeout: 268 seconds < 1567912275 12317 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Must be odd to have your name forever associated with a thing that way. < 1567912284 795618 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Although I guess it's more or less the same for mathematicians. < 1567912332 681260 :int-e!~noone@int-e.eu PRIVMSG #esoteric :it's already weird when you're just cited in a paper. "As showed, ..." < 1567912345 647387 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :Am I right I can simulate Haskell-like lazy evaluation in Scheme if I add "lazy" on every function's argument? < 1567912359 875835 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :would be weirder to have your IRC nick cited in that way < 1567912368 338596 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Hooloovo0: yes. < 1567912399 428778 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :also I wouldn't at all be surprised if someone cited this channel in a paper < 1567912429 892275 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Unfortunately "esoteric" is kind of unsearchable. < 1567912484 45710 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :#esoteric will remain esoteric, I guess < 1567912512 616154 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :http://sro.sussex.ac.uk/id/eprint/46869/ "cites" (well, refers in the text) to the wiki, though. < 1567912579 313420 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I wonder, do compilers nowadays use the ah-style registers? < 1567912613 96767 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :shachaf: yes, to generate FPU code < 1567912615 742601 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :how do you mean? I'd expect them to just be subregisters of the big ones, right? < 1567912630 272926 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :shachaf: which are rare today... substituted by SIMD code < 1567912697 924987 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :They are subregisters, but you only get them for four registers. < 1567912718 40314 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :And I wonder whether there's actually much use for them. < 1567912739 900986 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :shachaf: in SIMD? yes, they are used. when you pack smaller values into a register... < 1567912745 514761 :tromp_!~tromp@ip-213-127-58-74.ip.prioritytelecom.net JOIN :#esoteric < 1567912760 997691 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What does SIMD have to do with it? I'm confusil. < 1567912827 840143 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :shachaf: you can say SIMD registers have subregisters... < 1567912834 775452 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :shachaf: or you talk about x86 GPR? < 1567912836 790586 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm, apparently it is used. < 1567912844 95132 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm talking about ah/ch/dh/bh < 1567912867 232698 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I guess things like "or $0x80,%ah" are justified. < 1567912878 733030 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :shachaf: so I say, AH is used in the code working with 80-bit FPU STx registers < 1567912902 967876 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :https://godbolt.org/z/adJb7o used ah. < 1567912905 596703 :tromp!~tromp@2a02:a210:1585:3200:103d:4f2b:fe34:4ae1 QUIT :Ping timeout: 250 seconds < 1567912959 19054 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :couldn't find anything in google scholar, but there were a couple that linked to the wiki < 1567912970 432800 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Not quite sure why it made it `xor ah, ah; or ah, 18` instead of `mov ah, 18` but maybe there's a reason. < 1567912981 990858 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Or maybe it just couldn't quite grasp the intent of the code. < 1567912985 322338 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :shachaf: https://github.com/DennisYurichev/RE-for-beginners/blob/master/patterns/12_FPU/3_comparison/x86/MSVC/MSVC_EN.asm < 1567912988 946609 :Hooloovo0!Hooloovoo@sorunome.de PRIVMSG #esoteric :also one which talked about writing IRC bots in weird languages < 1567912999 554171 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :shachaf: test eax, ... would work here, but test AH, is shorter ins < 1567913027 297773 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes. < 1567913030 609689 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :fizzie: just a reason for shorter code < 1567913045 473647 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :ArthurStrong: `xor ah, ah; or ah, 18` is not shorter than `mov ah, 18`. < 1567913051 741007 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm, I guess "sub rsp, 8" is just to keep the stack aligned? < 1567913052 709753 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :fizzie: OK, maybe I wrong... < 1567913080 263882 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm xor ah, ah; or ah, 18; mov ah, 18 < 1567913081 411758 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 30 e4 xor ah,ah \ 2: 80 cc 12 or ah,0x12 \ 5: b4 12 mov ah,0x12 < 1567913100 392905 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :whoa, that's bizarro < 1567913142 779040 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I assume it might have something to do with the fact that the natural translation of `x &= ~0xff00u` is `xor ah, ah` while the one for `x |= 0x1200` is `or ah, 0x12`. < 1567913157 91713 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :But I couldn't think of a more obvious way to say "replace the second byte". < 1567913168 810111 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Attempting to go via the pointer route just made it actually play around with memory. < 1567913171 814908 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Maybe the union trick. < 1567913174 545045 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net PRIVMSG #esoteric :fizzie: compiler isn't good enough to optimize this out? < 1567913193 212944 :Sgeo!~Sgeo@ool-18b98995.dyn.optonline.net JOIN :#esoteric < 1567913229 898307 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Yes, for https://godbolt.org/z/jUPnPk it creates the expected code. < 1567913230 25359 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :clang has an entirely different encoding which doesn't use ah. < 1567913271 923291 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :(The stack adjustments changed because I had -Os for the second but -O2 for the first.) < 1567913291 874925 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :The size-optimized `push rax` and `pop rdx` are kind of funny though. < 1567913314 37874 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :push rzi < 1567913374 487275 :Sgeo_!~Sgeo@ool-18b98995.dyn.optonline.net QUIT :Ping timeout: 244 seconds < 1567913440 584198 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I bet most of these optimizations don't matter that much. < 1567913497 371853 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'd like to have a thing try different subsets of optimizations on a program to measure their impact and see which ones matter. < 1567914222 229617 :ArthurStrong!~ArthurStr@slow.wreckage.volia.net QUIT :Quit: leaving < 1567914862 298880 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Do you think this implementation of robot find kitten is good enough now? https://arin.ga/5wx9UE < 1567915438 359794 :Lykaina!~lyka@unaffiliated/schrodingerscat JOIN :#esoteric < 1567915536 877654 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :hi < 1567915682 961830 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :b_jonas, et al: rewrote S to load 8 bytes directly into ram < 1567915994 855498 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :also, first time i used what i believe to be an indirect load in a sample < 1567916349 112569 :Lykaina!~lyka@unaffiliated/schrodingerscat QUIT :Quit: leaving < 1567921252 129759 :clog!~nef@bespin.org QUIT :Ping timeout: 245 seconds < 1567923904 423089 :emma!~em@unaffiliated/emma JOIN :#esoteric < 1567924996 718204 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`? tanebventions: math < 1567924997 958331 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Mathematical tanebventions include D-modules, Chu spaces, the torus, Stephen Wolfram, Klein bottles, string diagrams, linear logic, the reals, Lambek's lemma, Curry's paradox, Stone spaces, algebraic geometry, locales, and histograms. < 1567925001 982315 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`? locale < 1567925003 309578 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :Locales are just frames, which are just complete Heyting algebras. Taneb accidentally invented them by asking about lattices. The only locale available in #esoteric is en_NZ.UTF-8. < 1567925015 950904 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Taneb: What did you ask about lattices? < 1567925038 51843 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Also, do you know the answer to this question: Why do topologists like bases more than subbases? < 1567927041 652789 :Spexty!2e3bf952@46.59.249.82 QUIT :Remote host closed the connection > 1567928152 737364 PRIVMSG #esoteric :14[[07Intramodular Transaction14]]4 10 02https://esolangs.org/w/index.php?diff=66017&oldid=65958 5* 03Hakerh400 5* (+36) 10Updated computational class. > 1567928197 615809 PRIVMSG #esoteric :14[[07Intramodular Transaction14]]4 M10 02https://esolangs.org/w/index.php?diff=66018&oldid=66017 5* 03Hakerh400 5* (+12) 10 < 1567928222 765212 :clog!~nef@bespin.org JOIN :#esoteric < 1567930790 953110 :Frater_EST!~adrianbib@wsip-68-15-198-210.ok.ok.cox.net JOIN :#esoteric < 1567930817 702719 :Frater_EST!~adrianbib@wsip-68-15-198-210.ok.ok.cox.net PART :#esoteric < 1567932532 762655 :Sgeo_!~Sgeo@ool-18b98995.dyn.optonline.net JOIN :#esoteric < 1567932651 744798 :Lykaina!~lyka@unaffiliated/schrodingerscat JOIN :#esoteric < 1567932727 77420 :Sgeo!~Sgeo@ool-18b98995.dyn.optonline.net QUIT :Ping timeout: 245 seconds < 1567935751 410506 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :fizzie: SIB encoding with no index register => there is a redundant encoding, sure, and it's useful for RIP-based addresses, but doesn't the x86 manual say that the scale must be 1 when there's no index register? < 1567935920 416579 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :shachaf: unambiguous name for unusual encodings => I don't think so, except for those unusual encodings that have some advantage why you want to use them, because normally you don't gain anything by using a longer encoding than the shortest one < 1567935944 697023 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :there are a few cases like nops of a specific length and two-byte ret where you may gain something < 1567935986 769226 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Should assemblers encode "mov $60, %rax" the same way as "mov $60, %eax"? > 1567936015 321199 PRIVMSG #esoteric :14[[07Seed14]]4 10 02https://esolangs.org/w/index.php?diff=66019&oldid=63558 5* 03Palaiologos 5* (+4284) 10 < 1567936081 542562 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :though of course, that only works if the assembler knows about the latest version of x86, because there are instructions like the prefixed jumps that were overlong encodings on earlier cpus but have a meaning why you want to use them on later ones < 1567936238 918444 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :shachaf: do compilers use the ah-style registers => I hope so, because xchg %al, %ah or similar is the recommended way to byteswap a 16-bit word, and that comes up sometimes eg. when loading a PPM < 1567936269 588105 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm. < 1567936283 204041 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You could probably use SIMD instructions to do it better. < 1567936517 85700 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: hmm, that could work. it's strange that it (the S instruction) only loads single bytes into the words, but I guess you want to use this for hello world messages and such < 1567936591 102951 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :shachaf: for more than one word, sure. you can even use general register instructions to do it faster on four words at a time. not for just one word though. < 1567936626 8929 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :but you already gave better examples, for arithmetic with a constant in the second byte < 1567936874 958472 :xkapastel!uid17782@gateway/web/irccloud.com/x-xzkcbkopdavulfdg JOIN :#esoteric < 1567936982 319244 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Ugh, why does this instruction set have so many special cases? < 1567937059 191895 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :shachaf: because of historical reasons, plus there are optimizations that make it run on the hardware better at the time the instruction encoding is defined, even if it looks uglier < 1567937080 512761 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :sadly some of those optimizations become pessimizations a decade later < 1567937119 754800 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Should I use ARM instead? < 1567937128 340019 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :no < 1567937136 370335 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :use x86_64 because it has fast cpu implementations < 1567937153 9535 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I want to support at least both of those eventually. < 1567937161 793954 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :you can of course ignore some of the more esoteric features when generating code, such as the x87 instructions < 1567937169 252684 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :and the MMX instructions < 1567937343 614320 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm .byte 0x48, 0x8b, 0x5d, 0x00 < 1567937344 645020 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 8b 5d 00 mov 0x0(%rbp),%rbx < 1567937346 994572 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm .byte 0x48, 0x8b, 0x9d, 0x00, 0x00, 0x00, 0x00 < 1567937347 936950 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 8b 9d 00 00 00 00 mov 0x0(%rbp),%rbx < 1567937355 633752 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :hm < 1567937392 131966 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm mov (%rax,%rsp,1), %rbx < 1567937393 13479 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: `(%rax,%rsp,1)' is not a valid base/index expression \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: missing ')' \ /tmp/asm.s:1: Error: junk `)' after expression < 1567937396 211163 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`asm mov (%rax,%rbp,1), %rbx < 1567937397 142049 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :0: 48 8b 1c 28 mov (%rax,%rbp,1),%rbx < 1567937415 244502 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I guess that's not so bad. < 1567937474 829334 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :try backwards, (%rsp,%rax,1) < 1567937514 229811 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Well, that works with 1 but not with 2. < 1567938186 888407 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :that is deliberate. the cpu is optimized for the case when %rsp points to the stack, in which case you don't want to multiply it with 2. this isn't required, you can use %rsp as a regular register, but you need more instructions to encode with it then, and a sigaltstack call to make sure whatever it points to won't get clobbered from a signal < 1567938378 880794 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes. < 1567938653 553774 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :%r12 is a ca... unintended victim, you also can't use it as a scaled index < 1567938718 235482 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :``` grep -E '\' share/dict/12dicts/Lemmatized/2+2+3frq.txt < 1567938719 250454 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :casualty \ causality \ constitutionality < 1567938722 407800 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :yeah, one of those < 1567938888 542918 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1567941472 56475 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :`? enrichment center < 1567941472 779818 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :`? enrichment < 1567941473 328578 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :enrichment center? ¯\(°​_o)/¯ < 1567941474 47189 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :enrichment ? ¯\(°​_o)/¯ < 1567941479 893619 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :hmm < 1567942878 225967 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru JOIN :#esoteric > 1567943560 221380 PRIVMSG #esoteric :14[[07Nop14]]4 M10 02https://esolangs.org/w/index.php?diff=66020&oldid=64701 5* 03A 5* (+18) 10 < 1567944972 909164 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :ACTION yawns < 1567945611 477027 :GeekDude!~G33kDude@unaffiliated/g33kdude QUIT :Ping timeout: 265 seconds < 1567945731 367314 :GeekDude!~G33kDude@unaffiliated/g33kdude JOIN :#esoteric < 1567945762 603844 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :so < 1567945766 686491 :FreeFull!~freefull@defocus/sausage-lover JOIN :#esoteric < 1567945850 583047 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :dreamed a got a legit call from microsoft about an account i hadn't used since high school < 1567946023 112094 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :eh no. if it's a call you got and they claim to be from microsoft, then it's a scam, and you shouldn't give them your personal details. even if they call you in your dreams. if this happens often, you'd better learn Occlumency to make sure you don't give away anything sensitive through a dream bridge. < 1567946049 735284 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :lol < 1567946095 535612 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :(wasn't a real rl account) < 1567946140 634807 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :so the dream sifters got garbage < 1567946145 588619 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :the call centers are in india, so they sometimes call you while you're asleep because of timezone differences < 1567946342 6248 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :when you get such a call, just hang up. it's not rude. < 1567946458 690165 :xkapastel!uid17782@gateway/web/irccloud.com/x-xzkcbkopdavulfdg QUIT :Quit: Connection closed for inactivity < 1567946521 790061 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :we don't have those scams here yet, I only know about them from the internets, but we get our fair share of other creative scams < 1567946570 470170 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i can't believe i used to play Go, don't even remember the rules, but i remember doing so with [a friend] in college in the coffee lounge at one of the tables. < 1567946631 474166 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :that's normal. you sometimes have to try things like that before you realize they're not for you. < 1567946695 693079 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i only remember because i was trying to remember everything i could about [said friend]. < 1567946709 30159 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :heck, I tried chess and bridge while I was younger, and even bouldering once. none of them are my ideas of a good time, and I know that now. < 1567946820 785135 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :you know who i'm talking about, right? It's someone here i don't feel like pinging atm. < 1567946977 917047 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :they were like my best friend in college. they know who they are. < 1567947060 274716 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :but then the go board game got between the two of you < 1567947082 370900 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :huh? < 1567947175 468829 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i dropped out and moved away. < 1567947271 941498 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :they graduated and got a job. the only "job" i've ever held was volunteering stuffing envelopes at a political office. < 1567947392 315619 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :(i can't work now. technically disabled.) < 1567947590 895115 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :seems my pandora station loves "imagine dragons" < 1567951199 255460 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :b_jonas: have you seen the current "hello world" program, using the new S op? < 1567951712 164760 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :http://sif.lesidhetree.com/sara/echidna/echidna_v0_01a6.pdf if this makes it any easier > 1567951889 963922 PRIVMSG #esoteric :14[[07*14]]4 M10 02https://esolangs.org/w/index.php?diff=66021&oldid=65073 5* 03Gamer 5* (+0) 10/* Javascript */ > 1567952069 717512 PRIVMSG #esoteric :14[[07*14]]4 10 02https://esolangs.org/w/index.php?diff=66022&oldid=66021 5* 03Gamer 5* (+263) 10/* Interpreters */ > 1567952148 186506 PRIVMSG #esoteric :14[[07*14]]4 10 02https://esolangs.org/w/index.php?diff=66023&oldid=66022 5* 03Gamer 5* (+28) 10/* Examples */ < 1567952921 597667 :xkapastel!uid17782@gateway/web/irccloud.com/x-jdjwpbotzdraoysl JOIN :#esoteric > 1567952922 9360 PRIVMSG #esoteric :14[[07+-14]]4 10 02https://esolangs.org/w/index.php?diff=66024&oldid=65875 5* 03Gamer 5* (+234) 10/* Interpreters */ > 1567952940 225501 PRIVMSG #esoteric :14[[07+-14]]4 10 02https://esolangs.org/w/index.php?diff=66025&oldid=66024 5* 03Gamer 5* (+5) 10/* Python 3 */ > 1567952989 493927 PRIVMSG #esoteric :14[[07+-14]]4 10 02https://esolangs.org/w/index.php?diff=66026&oldid=66025 5* 03Gamer 5* (+245) 10/* Interpreters */ > 1567953033 425026 PRIVMSG #esoteric :14[[07+-14]]4 10 02https://esolangs.org/w/index.php?diff=66027&oldid=66026 5* 03Gamer 5* (+42) 10/* Python 3 */ > 1567953381 256942 PRIVMSG #esoteric :14[[07+-14]]4 10 02https://esolangs.org/w/index.php?diff=66028&oldid=66027 5* 03Gamer 5* (+2) 10/* Python 3 */ > 1567953391 710487 PRIVMSG #esoteric :14[[07+-14]]4 10 02https://esolangs.org/w/index.php?diff=66029&oldid=66028 5* 03Gamer 5* (+2) 10/* Python 3 */ > 1567953439 700336 PRIVMSG #esoteric :14[[07+-14]]4 10 02https://esolangs.org/w/index.php?diff=66030&oldid=66029 5* 03Gamer 5* (+342) 10/* Interpreters */ > 1567953508 597265 PRIVMSG #esoteric :14[[07+-14]]4 10 02https://esolangs.org/w/index.php?diff=66031&oldid=66030 5* 03Gamer 5* (+121) 10/* Interpreters */ > 1567953537 789171 PRIVMSG #esoteric :14[[07+-14]]4 10 02https://esolangs.org/w/index.php?diff=66032&oldid=66031 5* 03Gamer 5* (+2) 10/* Python 3 */ > 1567953551 772951 PRIVMSG #esoteric :14[[07+-14]]4 10 02https://esolangs.org/w/index.php?diff=66033&oldid=66032 5* 03Gamer 5* (-2) 10/* Python 3 */ < 1567953917 477374 :MrBismuth!~ArcMrBism@2600:6c58:4200:ad9:b14a:1f03:d8e3:d6d7 JOIN :#esoteric < 1567954089 601915 :MrBusiness3!~ArcMrBism@2600:6c58:4200:ad9:50dd:627b:a242:9770 QUIT :Ping timeout: 250 seconds < 1567954295 704865 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1567955055 568858 :Spexty!2e3bf952@46.59.249.82 JOIN :#esoteric < 1567955199 611857 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :hi Spexty < 1567956817 255111 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :hi < 1567956947 69365 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :currently working on v0.01a7. G is currently null, K is what G used to be [STOP]. < 1567956979 337685 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :hmm why did you change that < 1567956981 170026 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :do you need null? < 1567956990 125570 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :or do you just want it < 1567956990 746400 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :lol < 1567956993 88163 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i need a placeholder < 1567956994 244411 :int-e!~noone@int-e.eu PRIVMSG #esoteric :hmm telegraphing changes < 1567957008 146078 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :placeholder? < 1567957009 279612 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :for what < 1567957012 925636 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :idk if I follow < 1567957015 239946 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :unsure < 1567957024 466339 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :why do you need a placeholder < 1567957042 245550 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :because i have an opening now < 1567957051 373588 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :oh at G lol < 1567957077 853354 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :the K op didn't even work < 1567957083 614657 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :before < 1567957087 904842 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :what was K < 1567957101 163413 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :http://sif.lesidhetree.com/sara/echidna/echidna_v0_01a6.pdf if this makes it any easier < 1567957110 940451 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :probably does lol < 1567957211 96793 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :think i used the wrong git tag options for 0.01a6 < 1567957299 461633 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :does J output a number < 1567957314 252996 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :a char < 1567957317 102397 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :oh < 1567957342 27270 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :i mean maybe you could just make G output as number < 1567957347 892899 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :unless you already have that and I just didn't see it < 1567957501 324930 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :so G would output the value as a formatted number? < 1567957528 767427 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :instead of as a char? < 1567957555 841242 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :yeah < 1567957567 668069 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i'll try it < 1567957567 704652 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :like if the value is 100, J would output 'd' but G would output 100 < 1567957823 427221 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :good idea < 1567957885 746447 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :thx < 1567957906 671775 :Spexty!2e3bf952@46.59.249.82 PRIVMSG #esoteric :it'd make printing numbers a lot easier < 1567958167 585448 :Spexty!2e3bf952@46.59.249.82 QUIT :Ping timeout: 260 seconds < 1567958506 194404 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :done < 1567958513 287025 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :pushed < 1567958620 824147 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :https://github.com/lykaina/echidna < 1567958654 965150 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i'll make the compiled documentation in a moment < 1567960317 997196 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :http://sif.lesidhetree.com/sara/echidna/echidna_v0_01a7.pdf < 1567960330 843829 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :good morning all < 1567960337 388286 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :hi kmc < 1567960360 282146 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :hi kmc < 1567960457 434296 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :what's new? < 1567960659 43453 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :was working on Echidna < 1567960729 564705 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: yeah, you have a flat memory space and indirect addressing, so you can easily write programs that use non-small arrays < 1567960746 30314 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :such as a maze generator or minesweeper or suchlike < 1567960764 830844 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :(although you could fit those into the 4 kiloword global address space of earlier versions too, to be frank) < 1567960821 185919 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :that was a stupid addressing system. now i leave it up to the programmer to determine one < 1567960896 589064 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :I think I have a case of the autumn sadness, already. Hopefully it’ll go away and won’t return ever < 1567960907 215063 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :anything standing out? < 1567960926 839578 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :as bad, i mean, compared to the rest? < 1567960941 246032 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: are you also planning to reorganize the interpreter so it doesn't seek once for every instruction executed, and once per program byte at every jump? < 1567960956 788576 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :nah, once per program byte at every subroutine call only < 1567960972 124095 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :no wait, it was five times per program byte at every subroutine call iirc < 1567960976 124512 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :anyway, < 1567960979 601778 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :3 now < 1567960990 780378 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :are you planning to rearrange the code so it doesn't seek as much? < 1567961007 435760 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i think i know what to do < 1567961057 519966 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :if it works, it might become v0.02 < 1567961085 726995 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :it's v0.01a7 now < 1567961102 431651 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :there’s some vague magic in versions going up < 1567961233 374725 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :I want to do something but I don’t want to do any particular things coming to mind < 1567961339 391604 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :it probably means I underslept but I don’t feel other symptoms of that < 1567961410 285463 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :read a book < 1567961663 148838 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :b_jonas: I read a few chapters of a web serial already but you’right maybe I’ll find solace in watching a series about Clifford algebras, I’m stuck at the introductory part which I basically know (but there would be an overal plan of the lectures ahead at the end of this episode) < 1567961680 507834 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :s/you’right/you’re right < 1567961697 203126 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :see I’m even sloppy at that extent < 1567961772 669224 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :I’m lazy to put earphones on :((( < 1567962045 913741 :int-e!~noone@int-e.eu PRIVMSG #esoteric :who needs neighbours anyway < 1567962185 944494 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :I have no speakers currently :) < 1567962229 680299 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :so either I put them on or I don’t listen to anything. And I’m still not done < 1567962318 615905 :Taneb!~Taneb@runciman.hacksoc.org PRIVMSG #esoteric :arseniiv: long shot, but are you in Cambridge? < 1567962324 655833 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :I have inferred all these things about planning with immediate rewards all the way to the goal of a plan but I just can’t < 1567962336 359133 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :Taneb: uh, no < 1567962339 233524 :Taneb!~Taneb@runciman.hacksoc.org PRIVMSG #esoteric :OK < 1567962372 256353 :Taneb!~Taneb@runciman.hacksoc.org PRIVMSG #esoteric :My plan of using you as an excuse to socialise has been foiled < 1567962378 727563 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :if I’d be there maybe I’d have a way better outlook on life :) < 1567962382 18333 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :oh < 1567962389 860018 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :b_jonas: look now < 1567962397 340757 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i think i got it < 1567962608 480187 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :okay I’ll try not to whine here, this is a good place and I’m not that depressed if I admit it to myself. And yesterday it wasn’t that bad so tomorrow shouldn’t be either. Though my planning issues wouldn’t go anywhere < 1567962845 412053 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :can someome look at nextiw() and findand() in https://github.com/lykaina/echidna/blob/master/src/echidna.c and let me know if they make sense? < 1567963215 841967 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i know it works, i just want to make sure it does it in a more effecient way < 1567963843 164709 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :am i getting a silent treatment? < 1567964321 58543 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :Lykaina: please don’t think so < 1567964352 582890 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :I bet b_jonas or someone is just busy right now < 1567964528 169950 :MDude!AdiIRC@c-174-55-101-236.hsd1.pa.comcast.net JOIN :#esoteric < 1567964554 905747 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :oh, okay. i'm a little impatient. < 1567964576 915084 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :it's a personality flaw < 1567965962 572477 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :I was writing a survey software, and perhaps there should be some function to specify that a question does not apply according to some condition, such as the answer to a previous question. < 1567966745 678268 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :zzo38: you could start with a simple boolean tag system: some answer options are tagged and some questions are marked with prerequisite tags, maybe negations of tags and complex boolean formulas with tags < 1567966745 787044 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :for example Question 1 has Answer 1 tagged with A and Answer 2 tagged with A, B; Question 2 has Answer 1 tagged with B; there are no other tagged answers, and Question 3 has prerequisites A, B. Then it’s only viable when (Q1 A1, Q2 A1) or (Q1 A2) were picked < 1567966745 823200 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :or Question 4 has prerequisite !B, then it’s not viable when (Q1 A2) or (Q2 A1) were picked < 1567966823 505985 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Yes, that could be one way to do it < 1567966860 54408 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :(of course the survey creator would name their tags in more sensible manner in the survey’s code) < 1567966875 905836 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru PRIVMSG #esoteric :zzo38: good luck! < 1567967242 109389 :imode!~imode@unaffiliated/imode JOIN :#esoteric < 1567969752 247365 :MDude!AdiIRC@c-174-55-101-236.hsd1.pa.comcast.net QUIT :Ping timeout: 245 seconds < 1567970448 796621 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: that's certainly better than what you had, because findand reads the file in one pass without seeking, and nextiw reads the instructions that you are skipping in one pass. < 1567970541 963259 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: however, I think they don't keep the promise that whitespace is ignored, and in fact it looks as if nextiw tried to distinguish the __ from the _ statement by assuming that the __ doesn't have what looks like label right after it (it has whitespace) but the _ has the label immediately after < 1567970554 806287 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :so maybe you should skip whitespace when you're reading the file < 1567970654 548335 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: hoever, (1) the main loop that's reading instructions in sequence is still seeking before every instruction, and I think you could improve on that because it's supposed to be reading instructions in sequence usually (when there's no jump or subroutine call executed), < 1567970702 909837 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: and I still don't like how nextand works, because it has to read the whole file for every subroutine call. ideally it would be nicer if you read the file just once, preferably store all to memory, but at least just store the addresses and names of all subroutines to memory < 1567970712 94852 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :also I nominate zzo38 to look at the code < 1567970764 286791 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :zzo38: you want to be able to disable questions depending on answers to previous questions? that could work < 1567970816 699462 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :zzo38: don't forget to add calendar time subtraction primitive then, to skip questions for users who claim to be under a certain age < 1567970836 817712 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :you don't want people to try to write those themselves < 1567971704 863960 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Why won't Bugzilla let me put in my own value for the "csv_colsepchar" setting? I get a error message: The value "" is not in the list of legal values for the csv_colsepchar setting. < 1567971730 76550 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :(The paste isn't working here; the value I put in is a tab, and this IRC client won't paste it.) < 1567971821 844808 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :is this for exporting? < 1567971823 958224 :Sgeo__!~Sgeo@ool-18b98995.dyn.optonline.net JOIN :#esoteric < 1567972028 659345 :Sgeo_!~Sgeo@ool-18b98995.dyn.optonline.net QUIT :Ping timeout: 268 seconds < 1567972487 460802 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :AAAAAAAAAAAAAAAAAAAAAA < 1567972520 213353 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :I bought the wrong non-refundable thing < 1567972522 382844 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :darn < 1567972536 55121 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :I noticed it too late < 1567972548 177834 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :so much wasted money < 1567972924 201045 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :let me see... maybe they can refund it if I request it early enough, there's something like that in the rules < 1567972952 169090 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :ACTION wakes < 1567972984 854567 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :oh whew, I think it can be changed (for a fee) < 1567972998 457369 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :(a fee that doesn't cost nearly as much as throwing away the whole thing) < 1567973054 531089 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :they allow changes within 12 hours, luckily < 1567973305 722888 :xkapastel!uid17782@gateway/web/irccloud.com/x-jdjwpbotzdraoysl QUIT :Quit: Connection closed for inactivity < 1567973361 877783 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :brb gotta eat lunch 4 hours late < 1567973532 676362 :Melvar!~melvar@dslb-084-063-063-063.084.063.pools.vodafone-ip.de QUIT :*.net *.split < 1567973556 274257 :Melvar!~melvar@dslb-084-063-063-063.084.063.pools.vodafone-ip.de JOIN :#esoteric < 1567974120 843239 :imode!~imode@unaffiliated/imode QUIT :Ping timeout: 258 seconds < 1567974359 764256 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Ping timeout: 268 seconds < 1567974740 683831 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :had a snack < 1567975062 860616 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :sounds like some{one,thing} fell next door < 1567975180 228376 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1567975633 67396 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :b_jonas: i agree with your suggestions, i just am unsure how to implement them. < 1567975667 24055 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i'm not the best programmer < 1567975719 696523 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1567975877 111683 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 245 seconds < 1567975877 546111 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1567976015 271831 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :b_jonas: should i load the program into the top 16k of memory, reserving it for that? < 1567976061 865846 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :or top 32k? < 1567976077 876687 :unlimiter!~unlimiter@41.141.230.227 JOIN :#esoteric < 1567976099 604239 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i *think* i can do that < 1567976478 904048 :MDude!AdiIRC@c-174-55-101-236.hsd1.pa.comcast.net JOIN :#esoteric < 1567976572 926260 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :also, my idea could allow for self-modifying code < 1567977950 209967 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :Lykaina: no, load the program into an area separate from the data memory < 1567978262 598787 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :oh... < 1567978574 966009 :unlimiter!~unlimiter@41.141.230.227 QUIT :Quit: WeeChat 2.5 < 1567978733 137347 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :Now I fixed my JSON in PostScript so that there is a option to convert \u escapes into UTF-8 (you can also tell it to just use the low 8-bits of each codepoint instead). < 1567978868 112841 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :zzo38: can the JSON writer write such escapes from utf-8 strings? < 1567978986 669512 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :b_jonas: No; I have not implemented the ability to decode UTF-8. Any byte that is not a control character or " or \ will be written unescaped. (Maybe a later version could fix that) < 1567979030 686265 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :oh. does that round-trip back to postscript with your JSON reader? < 1567979073 127690 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :it may be better to decode though, to avoid writing invalid utf, since the JSON reader on the opposite end may reject it < 1567979086 906020 :zzo38!~zzo38@24-207-15-213.eastlink.ca PRIVMSG #esoteric :It will still work with the reader; if it contains any bytes with the high bit set they will just be read in unchanged (regardless of the UTF-8 setting). < 1567979095 455518 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :evevn if you don't escape valid utf-8 that isn't special in JSO < 1567980066 863267 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :ooh! fun weather prediction for tuesday < 1567980392 339268 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :also nice weather now < 1567980412 234071 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Ping timeout: 246 seconds < 1567980874 66219 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1567981983 268861 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i loaded it to memory and now it doesn't work right... < 1567983184 234357 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Quit: Leaving > 1567983239 587105 PRIVMSG #esoteric :14[[07Keg14]]4 10 02https://esolangs.org/w/index.php?diff=66034&oldid=65471 5* 03JonoCode9374 5* (-234) 10 > 1567983570 379123 PRIVMSG #esoteric :14[[07Keg14]]4 10 02https://esolangs.org/w/index.php?diff=66035&oldid=66034 5* 03JonoCode9374 5* (+167) 10/* User Defined Functions */ < 1567983580 843675 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :grrr... < 1567983618 240014 :b_jonas!~x@catv-176-63-25-75.catv.broadband.hu PRIVMSG #esoteric :? < 1567983688 212112 :arseniiv!~arseniiv@95.105.2.110.dynamic.ufanet.ru QUIT :Ping timeout: 246 seconds < 1567983837 773362 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i made a version where i load the file into memory beforehand < 1567983850 326931 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :it doesn't work < 1567983873 598098 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :(yet) < 1567983883 453979 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :i don't know what's wrong < 1567984081 49236 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :http://sif.lesidhetree.com/sara/echidna/code/ < 1567984850 872993 :Lykaina!~lyka@unaffiliated/schrodingerscat PRIVMSG #esoteric :not putting broken code on the repo < 1567985748 359810 :sftp_!~sftp@unaffiliated/sftp JOIN :#esoteric < 1567985861 601556 :sftp!~sftp@unaffiliated/sftp QUIT :Ping timeout: 250 seconds < 1567985861 862208 :sftp_!~sftp@unaffiliated/sftp NICK :sftp