That makes perfect sense. Thanks Bas!

On Monday, June 30, 2014 4:27:47 PM UTC-7, Bas Laarhoven wrote:
>
>  
> Michael,
>
> Look at it this way: The data type is always 32 bits. (1<<3) or 0x00000008 
> can be used as 8-bit number without data loss.  ~(1<<3) or 0xFFFFFFF7 can't 
> be used as an 8-bit number without data loss. If you keep this in mind when 
> coding you'll be safe.
>
> The assembler is rather simple in parsing the input. It probably just 
> compares the parsed 32-bit result with the allowed range (0-255).
>
> -- Bas
>
>
>
> On 1-7-2014 1:02, Michael M wrote:
>  
> Hi Bas, 
>
> You are right! The following works:
> AND r3.b0, r3.b0, (~(1<<3) & 0xff)    // Clear bit 3
>
>  It's strange that (1<<3) is interpreted as 8-bit, but ~(1<<3) is 
> interpreted as 32-bit. It appears to be an undocumented quirk of using this 
> operator? Thanks for your help!
>
> On Monday, June 30, 2014 2:33:51 PM UTC-7, Bas Laarhoven wrote: 
>>
>>  
>> Hi,
>>
>> Have you tested masking the ~(1<<3) to 8-bits ? It's possible that the 
>> assembler sees a 32-bit constant where only an 8-bit value is allowed.
>>     
>> -- Bas
>>
>>
>> On 30-6-2014 22:04, Michael M wrote:
>>  
>> Hello,  
>>
>>  I've written a PRU program which manipulates bits in one of the 
>> registers. The program does not compile with PASM when I use the ~ operator.
>>
>>  Setting multiple bits works: 
>>  
>> or      r3.b0, r3.b0, 1<<3    // Set bit 3
>>
>>  
>>  but clearing multiple bits does not:
>>  
>> and     r3.b0, r3.b0, ~(1<<3)    // Clear bit 3
>>
>>  
>>  The exact compiler error is " Error: Syntax error in parameter 3". This 
>> should work since it comes straight from the TI wiki on the PRU: 
>> http://processors.wiki.ti.com/index.php/PRU_Assembly_Instructions#Bitwise_AND_.28AND.29
>>
>>  Is this a bug or am I doing something wrong?
>>
>>  Thanks,
>> Michael
>>   -- 
>> For more options, visit http://beagleboard.org/discuss
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "BeagleBoard" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to beagleboard...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>    -- 
> For more options, visit http://beagleboard.org/discuss
> --- 
> You received this message because you are subscribed to the Google Groups 
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to beagleboard...@googlegroups.com <javascript:>.
> For more options, visit https://groups.google.com/d/optout.
>
>
>  

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to