GC related C functions return inaccurate result

gc/src/heap/gc/clib_x64.c contains C functions for GC, such as get_registers(), which contains inline assembly to save all values in general purpose registers into an array. However C compilers may generate code that changes the registers before saving.

We may want to rewrite the function in assembly instead of C. And I believe it is reasonable that we want to eliminate all C functions in the code base and replace them with assembly (all C functions are pretty simple). Ideally we want only Rust code and assembly in the code base.