<?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>Calling Printf or other C functions</title><link>https://community.arm.com/developer/tools-software/tools/f/armds-forum/518/calling-printf-or-other-c-functions</link><description> Note: This was originally posted on 24th June 2009 at http://forums.arm.com Hello all, Processor : ARM Cortex A8 Toolchain: Codesourcery ARM GCC Version: gcc version 4.2.3 (Sourcery G++ Lite 2008q1-126) Query: We wanted to know how to call standard C</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: Calling Printf or other C functions</title><link>https://community.arm.com/thread/1097?ContentTypeID=1</link><pubDate>Wed, 11 Sep 2013 10:56:19 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:735563d2-8251-4fa2-baa0-f984508bce2c</guid><dc:creator>pachu pachu</dc:creator><description>&lt;div&gt;&lt;i&gt;Note: This was originally posted on 25th June 2009 at &lt;a href="http://forums.arm.com"&gt;http://forums.arm.com&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Pachu,&lt;br /&gt;&lt;br /&gt;The following should work:&lt;br /&gt;&lt;code&gt;&amp;#160; .cpu cortex-a8&lt;br /&gt;&amp;#160; .text&lt;br /&gt;&amp;#160; .align&amp;#160; 2&lt;br /&gt;&amp;#160; .global myfunc&lt;br /&gt;&amp;#160; .type&amp;#160;&amp;#160; myfunc, %function&lt;br /&gt;myfunc:&lt;br /&gt;&amp;#160; stmfd&amp;#160;&amp;#160; sp!, {r4, lr} @ preserve LR, keep SP aligned&lt;br /&gt;&amp;#160; adr&amp;#160; r0, mystring&amp;#160; @ point first param to string&lt;br /&gt;&amp;#160; mov&amp;#160; r1, #123&amp;#160;&amp;#160; @ set second param to 123&lt;br /&gt;&amp;#160; bl&amp;#160;&amp;#160; printf&amp;#160; @ call printf&lt;br /&gt;&amp;#160; ldmfd&amp;#160;&amp;#160; sp!, {r4, lr} @ restore LR and R4&lt;br /&gt;&amp;#160; bx&amp;#160;&amp;#160; lr&amp;#160;&amp;#160; @ return from this function&lt;br /&gt;&amp;#160; .data&lt;br /&gt;mystring:&lt;br /&gt;&amp;#160; .ascii&amp;#160; &amp;quot;Test %d\n\0&amp;quot; @ nul terminated string&lt;br /&gt;&amp;#160; .size&amp;#160;&amp;#160; myfunc,. -myfunc&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;hth&lt;br /&gt;s.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Hello Sim,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; thanks for the reply. I shall try it out.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;i shall reply back once i have tested the code.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;thanks and regards&lt;/span&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Calling Printf or other C functions</title><link>https://community.arm.com/thread/1096?ContentTypeID=1</link><pubDate>Wed, 11 Sep 2013 10:56:18 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:88841655-64f5-40da-8f22-acd3e36aa94b</guid><dc:creator>Simon Craske</dc:creator><description>&lt;div&gt;&lt;i&gt;Note: This was originally posted on 24th June 2009 at &lt;a href="http://forums.arm.com"&gt;http://forums.arm.com&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Pachu,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;The following should work:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&amp;#160; .cpu cortex-a8&lt;br /&gt;&amp;#160; .text&lt;br /&gt;&amp;#160; .align&amp;#160; 2&lt;br /&gt;&amp;#160; .global myfunc&lt;br /&gt;&amp;#160; .type&amp;#160;&amp;#160; myfunc, %function&lt;br /&gt;myfunc:&lt;br /&gt;&amp;#160; stmfd&amp;#160;&amp;#160; sp!, {r4, lr} @ preserve LR, keep SP aligned&lt;br /&gt;&amp;#160; adr&amp;#160; r0, mystring&amp;#160; @ point first param to string&lt;br /&gt;&amp;#160; mov&amp;#160; r1, #123&amp;#160;&amp;#160; @ set second param to 123&lt;br /&gt;&amp;#160; bl&amp;#160;&amp;#160; printf&amp;#160; @ call printf&lt;br /&gt;&amp;#160; ldmfd&amp;#160;&amp;#160; sp!, {r4, lr} @ restore LR and R4&lt;br /&gt;&amp;#160; bx&amp;#160;&amp;#160; lr&amp;#160;&amp;#160; @ return from this function&lt;br /&gt;&amp;#160; .data&lt;br /&gt;mystring:&lt;br /&gt;&amp;#160; .ascii&amp;#160; &amp;quot;Test %d\n\0&amp;quot; @ nul terminated string&lt;br /&gt;&amp;#160; .size&amp;#160;&amp;#160; myfunc,. -myfunc&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;hth&lt;/span&gt;&lt;br /&gt;&lt;span&gt;s.&lt;/span&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>