3 ms·
You haven't answered the question? Maybe because is there is no concernable difference between abstract machine models of both languages? You can't do anything
by nec4b 5y ago
You haven't answered the question?
Maybe because is there is no concernable difference between abstract machine models of both languages? You can't do anything more about instruction reordering or cache invalidation at the CPU level with assembly than you can with C.
- pjmlp 5y agoYou surely can, better read those CPU manuals about line bus controllers.
- nec4b 5y agoHave you? I used to write device drivers mostly on ARM architectures and I have newer seen an instruction which would let me precisely control CPU instruction ordering or what it does with cache that I couldn't do in C.
- pjmlp 5y agoThat is why stuff like V-Tune exist with micro-ops profiler and pipeline debugging, maybe ARM should provide better tooling.
- nec4b 5y agoThis tool helps as much with C (or even higher level languages) as it does with Assembly. It doesn't change the fact both languages work on the same abstract machine model.
- pjmlp 5y agoWhat is C's abstract model for NEON?
- nec4b 5y agoA simple c library: https://github.com/projectNe10/Ne10 https://github.com/projectNe10/Ne10 You have not yet shown an argument for why c is not a portable assembly.
- potiuper 5y agoAccess to CPU-specific flags like the carry flag. When doing a multiple-precision addition, if the CPU carry bit is inaccessible, then it must instead be compared to the result to see if it overflowed, which takes 3-5 more instructions per limb or worse on modern superscalar processors that are serial in terms of data accesses.
- nec4b 5y agoPortable by definition means it cannot capture every specific detail of every architecture out there.
- pjmlp 5y agoBy definition there isn't such thing as portable Assembly.
- deleted 5y ago[deleted]
- potiuper 5y agoNot by definition, but by practice as generating assembly is usually done to optimize performance. Languages restricted to generate a common feature set between isomorphic ISAs and bijectively associated assembly languages are at a performance disadvantage compared to the full ISA specific assembly.
- potiuper 5y agoThe carry flag is not a specific architectural detail; it is part of the output from the prime example of a basic electronic circuit that is the digital adder.