|
You are here |
blog.m-ou.se | ||
| | | | |
gregat.es
|
|
| | | | | ||
| | | | |
probablydance.com
|
|
| | | | | Here is a rough approximation of float multiplication (source): float rough_float_multiply(float a, float b) { constexpr uint32_t bias = 0x3f76d000; return bit_cast(bit_cast(a) + bit_cast(b) - bias); } We're casting the floats to ints, adding them, adjusting the exponent, and returning as float. If you think about it for a second you will realize that since... | |
| | | | |
coredumped.dev
|
|
| | | | | In this post, we are going to take a deep dive into pointer tagging, where metadata is encoded into a word-sized pointer. Doing so allows us to keep a compact representation that can be passed around in machine registers. This is very common in implementing dynamic programming languages, but can really be used anywhere that additional runtime information is needed about a pointer. We will look at a handful of different ways these pointers can be encoded and see how the compiler can optimize them for diff... | |
| | | | |
bryananthonio.com
|
|
| | | Sharing key insights on how computers work, from logic gates and binary arithmetic to assembly languages. | ||