<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.arm.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>long long: fast lo/hi reg access in assembly</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/29641/long-long-fast-lo-hi-reg-access-in-assembly</link><description> 
ARMCC 5.02 has this nice new feature of inline assembly support
for Cortex-M4 (I use STM32F4). 

 
But unfortunately it seems to be impossible to convince the inline
assembler to use direct register access for the low and high register
of a long long</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: long long: fast lo/hi reg access in assembly</title><link>https://community.arm.com/thread/80710?ContentTypeID=1</link><pubDate>Thu, 01 Nov 2012 07:26:11 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:74075564-92b4-4dde-80e2-c2ae7d9cbc35</guid><dc:creator>nice day</dc:creator><description>&lt;p&gt;&lt;p&gt;
Thank you for your support - I think we need enough crying people
to get this done ... (most easy way I think would be an intrinsic
function __reg( variable, n) [n= 0, 1, 2, ...] especially for inline
assembly - not allowed to be used in &amp;quot;normal&amp;quot; C code ).&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: long long: fast lo/hi reg access in assembly</title><link>https://community.arm.com/thread/61328?ContentTypeID=1</link><pubDate>Thu, 01 Nov 2012 07:02:06 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:1100b5de-69ef-4fa3-9fe5-f1b61bff28ad</guid><dc:creator>HansBernhard Broeker</dc:creator><description>&lt;p&gt;&lt;p&gt;
&lt;i&gt;a should be a long long register variable&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;
Too bad it&amp;#39;s not allowed to take the address of a register
variable. It would have made much more sense to stick with the
obvious method that actually does what you want, instead of mucking
around with pointers like this was still 1985:&lt;/p&gt;

&lt;pre&gt;
#define UINT64_LO32(a) ((uint32_t)a)
#define UINT64_HI32(a) ((uint32_t)(a &amp;gt;&amp;gt; 32))
&lt;/pre&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>