diff --git a/blog/content/first-edition/extra/naked-exceptions/03-returning-from-exceptions/index.md b/blog/content/first-edition/extra/naked-exceptions/03-returning-from-exceptions/index.md index be5421a1..d88f8f78 100644 --- a/blog/content/first-edition/extra/naked-exceptions/03-returning-from-exceptions/index.md +++ b/blog/content/first-edition/extra/naked-exceptions/03-returning-from-exceptions/index.md @@ -429,7 +429,7 @@ When we discussed calling conventions above, we assummed that a x86_64 CPU only However, modern CPUs also have a set of _special purpose registers_, which can be used to improve performance in several use cases. On x86_64, the most important set of special purpose registers are the _multimedia registers_. These registers are larger than the general purpose registers and can be used to speed up audio/video processing or matrix calculations. For example, we could use them to add two 4-dimensional vectors _in a single CPU instruction_: -![`(1,2,3,4) + (5,6,7,8) = (6,8,10,12)`](http://mathurl.com/jz3nvev.png) +![`(1,2,3,4) + (5,6,7,8) = (6,8,10,12)`](vector-addition.png) Such multimedia instructions are called [Single Instruction Multiple Data (SIMD)] instructions, because they simultaneously perform an operation (e.g. addition) on multiple data words. Good compilers are able to transform normal loops into such SIMD code automatically. This process is called [auto-vectorization] and can lead to huge performance improvements. diff --git a/blog/content/first-edition/extra/naked-exceptions/03-returning-from-exceptions/vector-addition.png b/blog/content/first-edition/extra/naked-exceptions/03-returning-from-exceptions/vector-addition.png new file mode 100644 index 00000000..2036edfb Binary files /dev/null and b/blog/content/first-edition/extra/naked-exceptions/03-returning-from-exceptions/vector-addition.png differ