You can just hack in some code in SAFE_HEAP_LOAD/STORE to actually do unaligned loads and stores. We could add an option for that, in fact.
- Alon On Thu, May 8, 2014 at 6:18 AM, Jukka Jylänki <[email protected]> wrote: > Oh, I misread Module.getValue and Module.setValue that they'd do unaligned > accesses. Well, what happens if you combine that modification with -s > UNALIGNED_MEMORY=1? Are those two incompatible? > > > 2014-05-08 15:48 GMT+03:00 Christoph Husse <[email protected]>: > > As this was the initial problem. The application does not work without >> UNALIGNED_MEMORY. >> >> On Thu, May 8, 2014 at 2:47 PM, Christoph Husse >> <[email protected]> wrote: >> > Well its a nice thought but the issue will most likely be that then >> > the application gets broken and doesn't do what it would normally do >> > ;). I need the UNALIGNED_MEMORY fix in combination with a notification >> > for actual unaligned accesses. >> > >> > On Thu, May 8, 2014 at 2:11 PM, Jukka Jylänki <[email protected]> wrote: >> >> Hmm, looking at the current code, as a quick manual fix you could try >> >> compiling with -s SAFE_HEAP=1, and then going to the output file and >> editing >> >> the generated functions SAFE_HEAP_LOAD and SAFE_HEAP_STORE to just >> >> 'console.error()' instead of 'abort()'. Does that work? >> >> >> >> >> >> 2014-05-08 14:39 GMT+03:00 Christoph Husse < >> [email protected]>: >> >> >> >>> EWWW!!! >> >>> >> >>> Looks like I have alignment issues (and well... my code too xD). >> >>> >> >>> So I have now worked a lot on the sources to have the same types on >> >>> all platforms, compile by using a single "cpp" file, etc... And I also >> >>> got the emscripten options like SAFE_HEAP really to work. >> >>> After executing the thing with Node.js I see that I have unaligned >> >>> reads & writes. using UNALIGNED_MEMORY=1 fixes it but its slow because >> >>> it generates the machinery for all loads/stores while only few of them >> >>> are unaligned. >> >>> >> >>> Is there a way to use UNALIGNED_MEMORY while at the same time listing >> >>> all the places where it actually encountered an unaligned load/store? >> >>> That would be really helpful because right now I would have to find an >> >>> offending line, recompile, restart, find the next offending line, >> >>> etc... This would be extremely time consuimg especially since one >> >>> iteration may well take over 5 minutes... >> >>> >> >>> Any ideas? >> >>> >> >>> On Wed, May 7, 2014 at 9:31 AM, Jukka Jylänki <[email protected]> >> wrote: >> >>> > Emscripten/JS is a little endian platform, just like X86, so the >> same >> >>> > code >> >>> > paths should work for JS and X86. It is ok to test for this at >> runtime >> >>> > and >> >>> > do different things based on the result. Just make sure that the JS >> >>> > platform >> >>> > correctly takes the little endian path and that should be all good >> >>> > there. >> >>> > >> >>> > >> >>> > 2014-05-07 9:49 GMT+03:00 Christoph Husse < >> [email protected]>: >> >>> >> >> >>> >> Okay thanks for that input. Gonna try it today. Maybe SAFE_HEAP >> was off >> >>> >> because I didn't get any output. >> >>> >> >> >>> >> Besides what you have recommended, I was working on "un-stding" my >> >>> >> sources >> >>> >> yesterday with success. There are NO standard library headers and >> also >> >>> >> no >> >>> >> memory allocations (everything froma static buffer) and no >> conditional >> >>> >> compilation macros... All types are the same size and sign on all >> >>> >> platforms >> >>> >> now. >> >>> >> >> >>> >> Only left is the big/little endian thing. Do you know if it is >> okay to >> >>> >> do >> >>> >> runtime code switches based on endianess? The code needs to take >> >>> >> different >> >>> >> paths depending on endianess... Its a very low level CPU emulator, >> so >> >>> >> there >> >>> >> is a lot of very platform specific low-level code in it. >> >>> >> >> >>> >> >> >>> >> -- >> >>> >> You received this message because you are subscribed to the Google >> >>> >> Groups >> >>> >> "emscripten-discuss" group. >> >>> >> To unsubscribe from this group and stop receiving emails from it, >> send >> >>> >> an >> >>> >> email to [email protected]. >> >>> >> >> >>> >> For more options, visit https://groups.google.com/d/optout. >> >>> > >> >>> > >> >>> > -- >> >>> > You received this message because you are subscribed to a topic in >> the >> >>> > Google Groups "emscripten-discuss" group. >> >>> > To unsubscribe from this topic, visit >> >>> > >> >>> > >> https://groups.google.com/d/topic/emscripten-discuss/tOz2Yc_sLuA/unsubscribe >> . >> >>> > To unsubscribe from this group and all its topics, send an email to >> >>> > [email protected]. >> >>> > For more options, visit https://groups.google.com/d/optout. >> >>> >> >>> -- >> >>> You received this message because you are subscribed to the Google >> Groups >> >>> "emscripten-discuss" group. >> >>> To unsubscribe from this group and stop receiving emails from it, >> send an >> >>> email to [email protected]. >> >>> For more options, visit https://groups.google.com/d/optout. >> >> >> >> >> >> -- >> >> You received this message because you are subscribed to a topic in the >> >> Google Groups "emscripten-discuss" group. >> >> To unsubscribe from this topic, visit >> >> >> https://groups.google.com/d/topic/emscripten-discuss/tOz2Yc_sLuA/unsubscribe >> . >> >> To unsubscribe from this group and all its topics, send an email to >> >> [email protected]. >> >> For more options, visit https://groups.google.com/d/optout. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "emscripten-discuss" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
