You can talk as long as you like about how beautifully fast and coherent the C is, there are a number of fake
celebrity Cameos these day, especially on RADs and those
hipster rapid development toys.
Too beautiful (or ugly?) actors like
Massimo Banzi want us to believe that we are the last heroes ever through infamous promotional sentences like "
Arduino, the C power under your finger tips"
They can talk as long as they like,
Cowboys on the console can dare to challenge a piece of wild hardware like a
MIPS4 R18200 prototype. Try to dare to challenge C to see how much power you can control under your finger tips when you try to ride a kicking bull in a rodeo.
Sure, you cannot be wrong, real C is a wild bull which, sooner or later, will throw you on the ground, pouring some misery on you, bleeding and battered, but proud to be a real cowboy on the console
Why? well ...
- MIPS4 is vaguely supported, but MIPS4 R18200 is supported neither by Gcc nor by Clang/LLvm, there is no support from any C-compiler except experimental ones
- you have two cores, each core has two thread, each thread has its pipeline and registers
- it doesn't issue OoO things, but in the Load/Store stage writes go into a FIFO, while reads can bypass the circuit
- the Cop0, Cop1, and some memory mapped peripherals are sensitive to the order of operations
- semaphores and mutex are also sensitive, and you need them when the cores have to talk on the internal shared ram
- oh, and don't forget TLB and cache, which both bite hard
- hence, in order to assure the correct order, since the C compiler is experimental and lacks all the support, you manually have to put asm("sync, isync, eieio") (yes, pretty like PowerPC assembly) here and there as "defensive code", plus tons of other tricks
... do you think the R18200 is too rare? Do you want an alternative kicking bull? Try with the PPC64/Cell (Playstation3)
Still after 50 years, C for
wild hardware manages a
shaky laugh, it can't wait to throw you on the ground
