develooper Front page | perl.perl6.internals | Postings from December 2002

Re: encoding info in mis-aligned pointers

Thread Previous | Thread Next
From:
Jim Cromie
Date:
December 31, 2002 11:00
Subject:
Re: encoding info in mis-aligned pointers
Message ID:
3E11A301.4060601@divsol.com
Dan Sugalski wrote:

> At 7:35 AM -0500 12/31/02, Jim Cromie wrote:
>
>> pardon the lack of clue I reveal here, but..
>>
>>
>> on 32 bit box, a void* has 3 values which are illegal/unaligned;
>>
>> void* ptr;
>> if (ptr & 0x00) {
>>    /* ok */
>> } else {
>>    /* some exceptional situation */
>> }
>>
>> is there any concievable use of this which doesnt interfere with 
>> legitimate bus-errors (ie existing unaligned pointer handling) ?
>
>
> You're looking to encode data in the low X bits (where X is 2 or 4 for 
> 32 or 64 bit machines), right?


yes- precisely!

> It's a clever thing to do, but one I admit I mistrust. Either it means 
> we have to check every pointer that might be encoded before we use it 
> or wedge into the system SIGBUS handler, which is non-trivial in many 
> places. It's also rather a portability problem. (And potential 
> security problem, alas)
>
> A cool idea, but I don't think we can do it.

thats what I thought - but had to ask on the off-chance it could benefit.

IIRC - I saw it once as a feature of some old Motorola ?? DMA controller 
- I think it was used to signal some scatter/gather ops



Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About