Hi everyone! I'm tracing go functions with uprobes/bpf and printing the contents of registers/stacks. So I can see the content of registers and stack at the entry of specified go functions.
I'm looking at a function with floats as parameters, and what I notice is that sometimes Go puts these values on the stack, and other times it puts them in registers The Go ABI spec says the following: *"If T is a floating-point type and can be represented without loss of precision in a floating-point register, assign V to register FP and increment FP."* and if I understand correctly, it would otherwise assign to the stack. I would say I see the float values on the stack ~15% of the time My question is: Why would a floating point type not be able to be represented without loss of precision? Why isn't it deterministic when the architecture/OS is the same? This is on a linux vm running on m1 apple silicon (so linux arm64) -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/ba10fd3e-5b62-40af-ba93-f50e85fb17fcn%40googlegroups.com.