News for hackers. Stuff that matters.
Re:Static Integer Types by nightpool on Thursday July 01, 2021 @10:40AM (#27699473)
> Let’s start with Rust, which offers the usize type, defining it as “The pointer-sized unsigned integer type. The size of this primitive is how many bytes it takes to reference any location in memory.” That definition is based on the assumption that a machine’s address and data widths are the same

Is this true? I don't know the history here, but just from reading that definition, it seems like `usize` is tied only to the address width. Where does the data width come in?

Re:Static Integer Types by fanf2 on Thursday July 01, 2021 @12:53PM (#27701245)
Rust’s usize does the jobs of both uintptr_t (a pointer-width type) and size_t (a data-width type)
Re:Static Integer Types by Diggsey on Thursday July 01, 2021 @10:03PM (#27707155)
size_t is just a type that's large enough to hold the largest possible object. It doesn't necessarily relate to the register size...

This means that `uintptr_t` must be at least as large as `size_t`, and so Rust's usage of `usize` for both is not problematic.

Re:Static Integer Types by magicalhippo on Thursday July 01, 2021 @11:56AM (#27700489)
I might be wrong but what came to mind was segmented memory, ie like 8086 where registers are 16bit but (far) pointers are 16:16 (ignoring the quirk with overlapping segments).
Re:Static Integer Types by moring on Thursday July 01, 2021 @12:55PM (#27701282)
That would make usize a 32-bit integer, regardless of the data width.

It does make other hidden assumptions though, such as that there is a single "memory" that is uniquely identified by a usize value, regardless of the way it is accessed. For x86, for example, the same address could either refer to a location in memory or to a location in an I/O device, depending on whether in/out instructions or "normal" instructions were used.

Re:Static Integer Types by magicalhippo on Thursday July 01, 2021 @01:02PM (#27701393)
> That would make usize a 32-bit integer, regardless of the data width.

Doh, long day at work, misinterpreted "data width".

Re:Static Integer Types by gautamcgoel on Thursday July 01, 2021 @11:32AM (#27700169)
Yeah I didn't understand that part either. The quote doesn't mention data width at all...