4 ms·
To reinforce this, I still believe C is one of the most elegant syntax's for a "portable assembler". There are many dark corners of C, take for example pointers
by elcritch 10y ago
To reinforce this, I still believe C is one of the most elegant syntax's for a "portable assembler". There are many dark corners of C, take for example pointers:
https://kristerw.blogspot.com/2016/03/c-pointers-are-not-hardware-pointers.html https://kristerw.blogspot.com/2016/03/c-pointers-are-not-har...
- bogomipz 10y agoThis is an interesting read, thanks. However I do not understand the opening sentence: "Pointers in the C language are more abstract than pointers in the hardware, and the compiler may surprise developers that think that pointers in C work in the same way as pointers in the CPU." What are pointers in the hardware? I am not sure what is being said. Any ideas?
- cesarb 10y ago> What are pointers in the hardware? Under current "flat address space" architectures, a pointer in the hardware is nothing more than a memory address, represented as an integer. That is, a pointer with value 0x12345678 is the address of the memory 0x12345678 bytes above the start of the virtual address space. In the C language, pointers are more abstract: they have to point to either within an object, or one past the end of an object. This is because there are architectures like segmented architectures, where a pointer has two parts (segment and offset) and cannot be treated just like an integer, and the same C program should in theory be able to also run in these architectures without change.
- bogomipz 10y agoThanks for pointing out the alternative of segmented memory, this now makes sense. Cheers.