00:00:00 --- log: started forth/14.12.22 00:01:15 --- quit: Savoyard (Ping timeout: 252 seconds) 00:44:36 --- join: impomatic_ (~chatzilla@111.30.125.91.dyn.plus.net) joined #forth 00:45:48 --- quit: impomatic (Ping timeout: 244 seconds) 00:46:01 --- nick: impomatic_ -> impomatic 01:06:18 --- join: true-grue (~grue@95-27-182-75.broadband.corbina.ru) joined #forth 01:15:31 --- quit: ASau (Ping timeout: 255 seconds) 01:45:50 --- join: Savoyard (~Savoyard@unaffiliated/savoyard) joined #forth 01:50:10 --- quit: Savoyard (Ping timeout: 255 seconds) 01:58:41 --- join: Azel (~Thunderbi@ANice-653-1-542-113.w86-205.abo.wanadoo.fr) joined #forth 02:37:47 --- join: darkf_ (~darkf___@unaffiliated/darkf) joined #forth 02:39:15 --- quit: darkf (Ping timeout: 258 seconds) 02:50:09 --- quit: samrat (Quit: Computer has gone to sleep.) 03:06:03 --- join: samrat (~samrat@61.12.96.226) joined #forth 03:10:15 --- quit: samrat (Client Quit) 03:27:30 --- nick: darkf_ -> darkf 03:34:40 --- join: Savoyard (~Savoyard@unaffiliated/savoyard) joined #forth 03:36:09 --- join: samrat (~samrat@61.12.96.226) joined #forth 03:39:20 --- quit: Savoyard (Ping timeout: 272 seconds) 03:59:17 --- quit: samrat (Quit: Computer has gone to sleep.) 04:09:52 --- join: Savoyard (~Savoyard@unaffiliated/savoyard) joined #forth 04:14:19 --- quit: Savoyard (Ping timeout: 258 seconds) 04:25:42 --- join: Zarutian (~Adium@168-110-22-46.fiber.hringdu.is) joined #forth 04:28:40 --- join: Ardeshir (~Ardeshir@5.119.67.98) joined #forth 04:40:47 --- quit: Ardeshir (Read error: Connection reset by peer) 04:56:32 --- join: nighty^ (~nighty@hokuriku.rural-networks.com) joined #forth 05:04:33 --- quit: Azel (Ping timeout: 250 seconds) 05:15:53 --- join: newcup (newcup@peruna.fi) joined #forth 05:22:42 --- quit: Zarutian (Quit: Leaving.) 05:58:45 --- join: Savoyard (~Savoyard@unaffiliated/savoyard) joined #forth 06:03:03 --- quit: Savoyard (Ping timeout: 244 seconds) 06:03:35 --- join: samrat (~samrat@123.236.183.195) joined #forth 06:34:41 --- quit: samrat (Quit: Computer has gone to sleep.) 06:54:17 --- join: vanila (~vanila@unaffiliated/vanila) joined #forth 07:28:05 --- join: samrat (~samrat@123.236.183.195) joined #forth 07:36:52 --- quit: darkf (Quit: Leaving) 07:50:53 --- join: fantazo (~fantazo@089144200147.atnat0009.highway.a1.net) joined #forth 08:02:51 --- join: kumul (~mool@adsl-64-237-237-214.prtc.net) joined #forth 08:18:07 --- quit: protist (Quit: Konversation terminated!) 08:19:30 --- join: ASau (~user@46.115.17.87) joined #forth 08:24:43 --- join: Zarutian (~Adium@168-110-22-46.fiber.hringdu.is) joined #forth 08:39:40 --- join: impomatic_ (~digital_w@111.30.125.91.dyn.plus.net) joined #forth 09:01:57 --- join: _spt_ (~jaat@unaffiliated/-spt-/x-5624824) joined #forth 09:08:19 --- join: Mat4 (~claude@ip18861915.dynamic.kabel-deutschland.de) joined #forth 09:09:27 --- quit: Zarutian (Ping timeout: 252 seconds) 09:16:08 --- join: Ardeshir (~Ardeshir@5.119.193.34) joined #forth 09:27:35 --- quit: Ardeshir (Ping timeout: 245 seconds) 09:29:43 --- join: Ardeshir (~Ardeshir@5.119.193.34) joined #forth 09:48:27 --- join: proteusguy (~proteusgu@ppp-110-168-229-40.revip5.asianet.co.th) joined #forth 09:48:27 --- mode: ChanServ set +v proteusguy 09:48:53 --- part: Ardeshir left #forth 10:44:29 --- quit: samrat (Quit: Computer has gone to sleep.) 10:44:32 --- join: impomatic__ (~chatzilla@165.68.189.80.dyn.plus.net) joined #forth 10:45:05 --- quit: impomatic_ (Ping timeout: 256 seconds) 10:46:13 --- quit: impomatic (Ping timeout: 256 seconds) 10:46:25 --- nick: impomatic__ -> impomatic 10:52:08 --- join: samrat (~samrat@123.236.183.195) joined #forth 11:30:40 --- quit: ASau (Ping timeout: 240 seconds) 11:30:41 --- quit: ErhardtMundt (Quit: No Ping reply in 180 seconds.) 11:31:04 --- join: ErhardtMundt (~quassel@93-43-163-57.ip92.fastwebnet.it) joined #forth 11:43:45 --- quit: kumul (Quit: Leaving) 11:58:42 --- join: ASau (~user@46.115.17.87) joined #forth 12:25:26 --- join: Azel (~Thunderbi@ANice-653-1-542-113.w86-205.abo.wanadoo.fr) joined #forth 12:29:48 --- quit: fantazo (Quit: Verlassend) 12:44:29 --- quit: samrat (Quit: Computer has gone to sleep.) 13:32:33 --- quit: true-grue (Read error: Connection reset by peer) 14:20:20 --- join: xyh (~xieyuheng@2001:250:3002:5550:6ea1:cc0f:bcb2:b187) joined #forth 14:30:04 --- quit: proteusguy (Ping timeout: 256 seconds) 14:43:05 --- join: proteusguy (~proteusgu@ppp-110-168-229-123.revip5.asianet.co.th) joined #forth 14:43:05 --- mode: ChanServ set +v proteusguy 14:43:20 --- quit: ErhardtMundt (Ping timeout: 255 seconds) 15:07:43 --- quit: Azel (Ping timeout: 252 seconds) 15:25:41 can anyone here explain the opcode encodings for the thumb version of the BL instruction? 15:25:51 specifically what are the S, j1 and j2 bits? 15:40:34 --- quit: _spt_ (Quit: Irssi 0.8.17 http://irssi.org/ - gone) 15:46:11 --- quit: nighty^ (Quit: Disappears in a puff of smoke) 16:01:25 * tangentstorm has no idea whatsoever but would be happy to make an attempt at decyphering if you pointed him to the docs. 16:03:33 i have the arm docs right here. it tells me where all the various bits go. not what they are for lol 16:03:44 that's weak :/ 16:04:03 im using DDI0403D arm arch v7m ref manual 16:04:16 what does BL do in general? 16:04:26 11110Siiiiiiiiii11j1jiiiiiiiiiii 16:05:02 hrm. 'branch with link' 16:05:07 I1 - NOT (j1 eor s) I2 = NOT(j2 eor s) Imm32 = S:I1:I2:Imm10:Imm1:0 16:05:11 yes 16:05:37 its like a call but does not push the return address, it put it in the link reg 16:07:37 that's neat how you can just assign to the program counter. 16:07:40 seems there is also a thumb-2 supplement 16:07:52 mov pc, r1 16:08:03 mov pc, lr <- a return after a bl 16:08:09 bx lr 16:08:49 lol the supplement seems about as big as the thing its supplementing :P 16:09:27 is the j for 'jazelle'? 16:10:20 I do not know the Thumb ISA but it seems to me the this instruction encoding extend the jump address though left shifting 16:10:41 yes thats what the j means 16:11:01 hey Mat4 16:11:07 hi tangentstorm 16:11:08 previously the bl and blx opcodes in thumb were encded in two 16 bit opcodes 16:11:17 "In Jazelle state the processor executes Java bytecodes as part of a Java Virtual Machine (JVM). 16:11:19 thumb2 changed that to a single 32 bit opcode 16:11:20 " interesting. 16:13:13 for a RISC architecture that's a compact encoding for sure 16:13:38 arm only claims its risc. its a highly complicated instruction encoding 16:13:50 no logic to it 16:14:38 what does eor mean? xor? 16:14:42 yes 16:15:55 what does this part mean? Imm32 = S:I1:I2:Imm10:Imm1:0 16:16:42 --- join: ErhardtMundt (~quassel@93-43-163-57.ip92.fastwebnet.it) joined #forth 16:17:18 those are the bits that make up the target address. 16:17:35 + shift value I assume 16:17:44 no. sign extended 16:18:45 ok, it's get late here 16:18:48 ciao 16:18:49 problem is, the I1 and I2 bits are the inverse of j1 with the S bit and j2 with the s bit respectivly 16:19:06 which is supre squirly to my thinking 16:19:56 someone wrote an emulator for ARM in c++: http://buildd-clang.debian.net/coverage/tools/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp.gcov.html 16:20:09 probably an artefact of some kind of hardcoded logic optimization 16:20:10 search for EmulateBL 16:21:51 --- part: Mat4 left #forth 16:23:26 line 1512... uint32_t I1 = !(J1 ^ S); 16:23:57 two extra offset bits are generated by xoring the J1 and J2 bits with offset22 16:23:58 same thing on line 1494 in the case Encoding T1... 16:24:18 the next line is uint32_t imm25 = (S << 24) | (I1 << 23) | (I2 << 22) | (imm10H << 12) | (imm10L << 2); 16:24:19 this means the offiset is sign extended when j1 = j2 = 1 16:24:33 which ensures back compat with existing instructions 16:24:34 i saw that in the source code too 16:24:45 in a comment... 16:24:52 i saw this in a pdf i found 16:25:16 right 16:25:21 makes assembling a bl opcode a nightmare 16:26:13 well, i don't know that i could explain this code but maybe if you read that part of the emulator code it'll make sense ? :/ 16:26:53 well what im actually doing is trying to decode the bl opcode heh 16:27:10 with the first encoding, it does: target = pc + imm32; 16:27:23 with the second, it does: target = Align(pc, 4) + imm32 16:27:55 but the code you flagged above will help 16:30:02 --- quit: xyh (Read error: Connection reset by peer) 16:48:58 btw that t2 encoding is not for bl, its for blx 16:49:06 branch for link with exchange 16:53:09 oh. sorry. 16:57:29 no its practically the same opcode encoding 16:57:41 just two bits are set to 0 17:15:59 --- quit: impomatic (Ping timeout: 258 seconds) 17:18:39 --- join: kumul (~mool@adsl-64-237-239-214.prtc.net) joined #forth 17:44:18 --- join: mnemnion (~mnemnion@c-98-210-219-91.hsd1.ca.comcast.net) joined #forth 17:59:36 --- join: darkf (~darkf___@unaffiliated/darkf) joined #forth 18:16:08 --- quit: kumul (Read error: Connection timed out) 18:16:52 --- join: kumul (~mool@adsl-64-237-239-214.prtc.net) joined #forth 19:01:24 --- quit: kumul (Quit: Leaving) 19:15:21 --- join: samrat (~samrat@123.236.183.195) joined #forth 19:43:34 --- quit: vanila (Quit: Leaving) 20:01:16 tangentstorm: you sure it could use imm32 as the instance number? 20:02:30 * tangentstorm is not sure of anything. 20:30:26 --- join: xyh (~xieyuheng@2001:250:3002:5550:6ea1:cc0f:bcb2:b187) joined #forth 20:41:38 --- quit: xyh (Read error: Connection reset by peer) 20:44:05 --- join: xyh (~xieyuheng@2001:250:3002:5550:6ea1:cc0f:bcb2:b187) joined #forth 20:48:48 --- quit: xyh (Remote host closed the connection) 20:54:53 --- quit: samrat (Quit: Computer has gone to sleep.) 21:29:20 --- join: MrMobius_ (~MrMobius@c-71-206-218-187.hsd1.wv.comcast.net) joined #forth 21:36:34 --- join: samrat (~samrat@61.12.96.226) joined #forth 21:38:24 i recently was very interesting of those tv box 21:38:41 many has sata port and usb3.0 port 21:39:01 some even got gigabyte ethernet port 22:49:58 --- join: protist (~javery@184.239.69.111.dynamic.snap.net.nz) joined #forth 22:53:02 --- join: Azel (~Thunderbi@ANice-653-1-542-113.w86-205.abo.wanadoo.fr) joined #forth 23:15:53 I440r, are you looking at Capstone disassembler? http://www.capstone-engine.org/index.html 23:17:43 Also there's darm which has been working on thumb2 support https://github.com/jbremer/darm 23:20:18 --- quit: Azel (Ping timeout: 244 seconds) 23:22:48 yunfan, we had a client ask us to build them an app in one of those tv boxes from china. was a standard android device. cpu a little underpowered but could otherwise do just about anything with them. 23:28:16 proteusguy: interesting, why a chinese menufactoy needs to ask foreigner company's build service, i mean in china they could get cheeper one 23:28:34 proteusguy: is that allwinner's Axx chip? 23:28:41 or RK32xx? 23:30:33 yunfan, perhaps they want it done right? :) I don't recall the chip it was some ARM early this year. 23:32:18 proteusguy: then does such box has any useful port? 23:32:28 like sata or usb3 23:32:48 i used to be interesting of raspberry pi 23:33:15 Yes it had several USB ports. I've got about 4 RPis laying around my home office here. 23:33:18 but soon, i realized that the sd card's rw speed is just a nightmare for practical usage 23:33:55 Yep it's meant for pulling video content off for display and not much else. 23:34:42 yep, and usb2 might enought for those who just need a harddisk video player, but not for me 23:35:14 It's certainly not intended to be a high performance device but its great for small relatively low power hacking around. 23:35:46 yes, its not high performance for a single one 23:36:00 but what if we make a grid from many devices? 23:36:24 for eg, attach a 2T harddisk for each box 23:37:01 Well as with most things pushing limits you rapidly find yourself I/O bound to the point of uselessness. 23:37:14 so you coule got a 20T array in about (500 + 400 ) * 10 = 9000 RMB = 1500 USD 23:38:02 and today, these box could not only offer you adapter feature, but also could offer you pre-computing/filtering 23:38:19 such grid is useful for database case 23:38:25 or log analyzing 23:38:36 YOu wanna see something running parallel stuff in a cool way check out adapteva. Small custom CPU array (16+ core) controlled by an ARM SoC. 23:40:20 proteusguy: nope, i want to cheaper personal clouding, because i live in china, i cant afford a expensive one 23:40:22 I am a fan of bunches of small efficient dedicated CPUs working together. My efforts/experiments with stack based CPUs is really oriented towards that. 23:40:29 and i knew parallel :] 23:41:11 proteusguy: i often need to filtering about 100G log file , that's one of my job for my boss :] 23:41:32 yunfan, your issue is always going to be overwhelming your I/O buses. They'll be saturated while all those CPUs are sitting around waiting for data so they can compute something. 23:43:05 yunfan, that's exactly the kind of operation where it's difficult to get all the cpus data when they're ready for it. 23:43:13 yes so i am interesting of let those box to computing on data side, so they dont need to return huge data to the request side 23:46:04 if you have multiple filters going against the same data AND you have some kind of buffer that can allow reads into multiple CPUs at once (bus line limitations) then you can perform filtering simultaneously in buffer-size batched sets. You're basically bound by the slowest computational filter or (far more likely) the speed by which you can get the data to the buffer. But getting all those read lines simultaneously to the CP 23:46:04 U is a challange. 23:47:58 right 23:48:26 I have a concept of a stack based CPU parallel architecture with lots of special on chip buffers with some dedicated hardware ops that I call my "string machine" that addresses these issues specifically but haven't had a chance to implement and try it out on an FPGA. 23:48:29 but i still want to try, that's why i keep asking people to test those tvbox's sata port for me these days 23:49:40 best way to learn this stuff is by playing with it. when it comes to critical path for capacity/performance we always encounter surprises. :) I suggest you give it a try and see what happens. 23:50:37 --- join: gabriel_laddel (~user@2601:9:4f81:acb0:221:6aff:fea4:6db8) joined #forth 23:50:47 proteusguy: i think you need first solve the hardware model problem 23:51:09 proteusguy: the current cpu were optimized for register machine so much 23:51:19 --- quit: gabriel_laddel (Changing host) 23:51:19 --- join: gabriel_laddel (~user@unaffiliated/gabriel-laddel/x-9909917) joined #forth 23:52:47 yunfan, yes and that makes task switching and most function calls quite expensive 23:53:30 proteusguy: yes, if they give a addressable register chunk inside the cpu, that could make stack machine run quicker 23:53:42 for eg, a 64K chunk 23:54:10 so that you could use this as the cache line for outside ram 23:56:10 the current L1 cache would flush even you change one value of each line 23:56:17 managing such caches in an optimal manner is NPHard :) 23:56:41 but for stack machine, you dont need to flush the whole line until it arrive the line bound 23:58:29 that's why i need a addressable register chunk , 1, its register speed, 2, its addressable, so you can do batch flush 23:59:59 --- log: ended forth/14.12.22