IRC channel logs
2022-11-28.log
back to list of logs
<stikonas>I'll see how many arches I can do, should be able to do at least x86, amd64, riscv32 and riscv64 <stikonas>not sure whether I'm familiar enough with others but we'll see <stikonas>ok, I think I managed to encode store for knight and aarch64... <stikonas>not sure how to store 16 bit value on armv7l... <stikonas>hmm, I thought to use current_target->size to get type size <stikonas>so I think the line is struct blob* i = hash_table[hash]; <stikonas>hmm, that will probably need more time to dig in than I have today... <stikonas>so I think that create_struct does not setup indirect types... <stikonas>hmm, not sure what's the best way to solve this <oriansj>stikonas: well the pointers to the type always will be register size as we use the full address space <stikonas[m]>oriansj: yes, but I think right now structure type points to itself for indirect type rather than struct* <stikonas[m]>So when you are using struct pointers, type size is struct size rather than register size <stikonas>oriansj: so I've been doing a bit more debugging of current_target->size with structs <stikonas>turns out that "struct a *b" works fine and has correct size. It's the "struct a **b" case that's causing me issues <stikonas>probably need to check if second indirection is set up correctly... <stikonas>and then on line 771 in M1-macro.c we have hash_table = calloc(65537, sizeof(struct blob*)); <stikonas>so on this line I got blob 40 hash_table for (current_target->name, current_target->size and global_token->prev->s) <stikonas>so I guess I need to fix create_struct first... <stikonas>it does indeed seem that create_struct only sets up struct and struct* <oriansj>say some clever work arounds for serious design limitations sort of situation <stikonas>oriansj: I think we can fix it with one liner <oriansj>you might want to check char** argv behavior <stikonas>something else goes bad if I include my other changes... <stikonas>where I try to replace STORE_INTEGER with store_into_register(current_target->size) <oriansj>well on MCP it would be a struct but I guess we can safely just refuse to support that Operating System <oriansj>STORE_INTEGER stores the register into RAM if I remember correctly <stikonas>well, I basically wanted to replace stuff like "else if(X86 == Architecture) store = "STORE_INTEGER\n";" <muurkha>yeah, the Burroughs Large Systems contingent has gotten fairly thin over the yearws <oriansj>that was the idea of optimizers and specializers for M3 <stikonas>so store_into_register(unsigned size) would take number of bytes to write <stikonas>therefore I had to rely on current_target->size having correct value