Liste des Groupes | Revenir à c arch |
On 14/09/2024 21:26, Thomas Koenig wrote:This becomes much simpler in Rust where usize is the only legal index type:MitchAlsup1 <mitchalsup@aol.com> schrieb:For some kinds of instructions, that's true - for others, it's not so easy without either making rather complicated instructions or having assembly instructions with undefined behaviour (imagine the terror that would bring to some people!).
>In many cases int is slower now than long -- which violates the notion>
of int from K&R days.
That's a designers's choice, I think. It is possible to add 32-bit
instructions which should be as fast (or possibly faster) than
64-bit instructions, as AMD64 and ARM have shown.
>
A classic example would be for "y = p[x++];" in a loop. For a 64-bit type x, you would set up one register once with "p + x", and then have a load with post-increment instruction in the loop. You can also do that with x as a 32-bit int, unless you are of the opinion that enough apples added to a pile should give a negative number of apples. But with a wrapping type for x - such as unsigned int in C or modulo types in Ada, you have little choice but to hold "p" and "x" separately in registers, add them for every load, and do the increment and modulo operation. I really can't see this all being handled by a single instruction.
Les messages affichés proviennent d'usenet.