<?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/"><channel><title>Tom Include's Activities</title><link>https://community.arm.com/members/tom-include</link><description>Tom Include's recent activity</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>Store PC to  different from memory and register?</title><link>https://community.arm.com/cn/f/discussions/47549/store-pc-to-different-from-memory-and-register</link><pubDate>Mon, 31 Aug 2020 07:57:19 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:f05861f7-b6e2-4d89-81b1-bf665cdd6caf</guid><dc:creator>Tom Include</dc:creator><description>&lt;p&gt;I,m using keil uVison4.22 and the device is arm7 ,I am testing about SubroutineCall,but found a doubt that the code store the r15(PC) to the address r13 of memory,and the value is PC + 12 ,if i use mov instructions to anyOne register is PC + 8 correct . but why?&lt;pre class="ui-code" data-mode="text"&gt;AREA SubroutineCall,CODE,READWRITE

	ENTRY

	ADR r13,Stack
	
	SUB r13,r13,#4
	
	STR r15,[r13] 
	
	B Target
	
	MOV r0,#0xFF
	
	MOV r0,#0x18
	
	LDR r1,=0x20026
	
	SVC #123456
	
Target MOV r1,#0xAA
	
	LDR r12,[r13],#+4
	
	SUB r12,r12,#4
	
	MOV r15,r12



	AREA SubroutineCall,DATA,READWRITE
	
	SPACE 64
	
Stack DCD 0x00000000
	
	END&lt;/pre&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-discussions-components-files/7/pastedimage1598860630587v2.png" alt=" " /&gt;&lt;img src="/resized-image/__size/320x240/__key/communityserver-discussions-components-files/7/pastedimage1598860630587v3.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;so, what is the different store PC into between memory and register? because of the&amp;nbsp;&lt;span&gt;pipeline？&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>