github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:14 lucasb left 01:01 MasterDuke left 03:34 squashable6 left 03:35 squashable6 joined 04:15 Kaiepi left 04:51 Kaiepi joined 08:08 dogbert11 left, dogbert11 joined
nwc10 good *, #moarvm 08:13
08:32 MasterDuke joined 08:37 sena_kun joined
nine good nwc10! 08:51
09:30 zakharyas joined 10:18 domidumont joined 11:30 Altai-man joined 11:32 sena_kun left 12:58 zakharyas left 14:27 zakharyas joined 14:42 brrt joined 15:31 sena_kun joined 15:33 Altai-man left 16:25 squashable6 left 16:26 brrt left 16:27 squashable6 joined 17:24 brrt joined 17:32 brrt left 17:39 patrickb joined 18:08 brrt joined
cog Hi, brtt. I am trying to make sense of the jtting. How come bytecode instructions are defined twice, one in core_template.expr and once in tiles.dasc. Which is used when. 18:19
brrt hi cog 18:20
good question
the expressions in core_template.expr map from moarvm bytecode to the JIT IR
cog I understand one is processor independant
brrt so there's another file that you may have missed, which is tile_pattern.tile, which maps subtrees of expressions to 'tiles' 18:22
cog So what the point of tiles.dasc ?
brrt tiles represent basic architecture instructions like 'add', 'mov', 'lea', etc.
tiles.dasc containst the functions that emit those instructions to the assembler buffer 18:23
so, there's three steps:
- map MoarVM bytecode to lower-level 'expression' JIT code 18:24
- map the expressions to the tiles
- emit the tiles to the assembler buffer
cog Ok, I still don't get the relationship between step 2 and 3. If you have tiled what is the purpose of editing using the .dasc instructions ? I am missing something, 18:27
timotimo the dasc file is what's responsible for writing the actual bytes that represent the instructions with the desired arguments
so it does the "instruction encoding" step i guess? 18:28
are you familiar with how x86 and x86_64 instructions look?
at the bit and byte level i mean 18:29
cog A little. I am trying to see if I can do the same with arm.
timotimo oh cool
cog So far it is way over my head. 18:30
timotimo i do believe arm is a lot less complicated in its encoding
but you won't have to deal with that anyway, that's dynasm's job
cog Yes 3 register instructions instead of two. RISC.
timotimo what i'm refering to mostly is length of instructions and how the details are signalled 18:31
cog Also how to test it piece wise ? Starting by writing or stealing from somewhere the functions prologue and epilogues. 18:32
timotimo yes definitely start with these, won't get anywhere without that 18:33
but it also requires you to decide which registers should hold what
like, we have one register holding the ThreadContext at all times if i'm not mistaken
i think we have one register that needs to always be free for temporarily moving stuff out of the way?
you'll want to build a very simple function, likely in nqp, and call it over and over, and that ought to give you a guide for the order in which to implement things so that you can always run a bit of test code 18:35
the spesh log should help with that, have you looked at its output yet? the env var MVM_SPESH_LOG=filename activates it 18:36
cog Probably rewriting the brainfuck dynasm tutorial using arm will be a way to get my feet wet before trying doing anything MoarVM related. 18:37
Thx timotimo and brrt
So it there a way to jit just a nap test functions ? 18:40
* nqp
timotimo i'd really just get moar to call the function often enough so the jit will naturally do its thing
18:42 domidumont left 19:01 lucasb joined
brrt cog: not yet, and I want something like that very much 19:08
19:23 zakharyas left 19:30 Altai-man joined 19:32 sena_kun left 20:27 MasterDuke left 20:28 patrickb left 20:53 zakharyas joined 21:10 MasterDuke joined 21:17 brrt left 22:30 zakharyas left 22:31 Altai-man left 23:10 MasterDuke left
cog If I understand correctly MVM_JIT_EXPR_TEMPLATE DESTRUCTIVE flag is tested but nowhere set 23:12
23:21 lucasb left
timotimo that's what you get when you make a (template blahblah! (...)),i.e. ending in ! 23:51
forgot how exactly it looks
cog To get a feeling of the data, I am have the sexpr parser using raku grammars. Now I have to write the actions to generate the files. 23:55
S/am have the/have written/