I've been writing windows programs for about 12 years now, as a hobby. I enjoy writing assembler code to mix in with my c++ code. I know that most of the time, the compiler will probably generate faster code than me, but still, I enjoy it. I really like the idea of x64, and have enjoyed learning/using it. I do have some questions that I've tried to answer for 2 days now, and cant find it anywhere, so here it is.
My c++ code is going to call an assembly function that will run for a long period of time (between 1 and 16 milliseconds) before returning. This assembly function will need to call other assembly functions that ive written, and maybe some small c++ functions from a jump table. The thing is, I don't want to write prologue/epilogue code for my assembly functions (other than the main one), and I want them to be able to use the stack and all registers, so leaf functions wont work. So, what will happen if I don't put unwind data in my assembly code? If I can leave it out, should I disable c++ exceptions and floating point exceptions in my project settings? Can an interrupt execute properly if it were to occur while one of my assembly functions with no unwind data was executing? Can windows api calls work properly without exceptions enabled, and being called from a function with no unwind data? Again, I'm fine with my program exiting if an exception is raised. This is a hobby and all for fun for me, so its not the end of the world if its not perfect.