Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
10 years, 5 months ago.
How to use Assembly Code? to use Register r5
I'm trying Assembly code in mbed.
Board is Nucleo F401RE.
It seems break program when use Register r5,r6....
Only r0,r1,r2,r3,r4 well.
I see
http://mbed.org/cookbook/Assembly-Language
But not find it.
Which document can I read to understand this.
My assembly Code
__asm void dcf(S32 *param ,S16 *signal){ LDR r3,[r0 , #0] LDR r4,[r1 , #0] SMULWB r2,r3,r4 LDR r5,[r0 , #4]; This Break Program LDR r6,[r1 , #4] SMLAWB r2,r5,r6,r2 LDR r3,[r0 , #8] LDR r4,[r1 , #8] SMLAWB r2,r3,r4,r2 LDR r5,[r0 , #12] LDR r6,[r1 , #12] SMLAWB r2,r5,r6,r2 LDR r3,[r0 , #16] LDR r4,[r1 , #16] SMLAWB r2,r3,r4,r2 MOV r0,r1; MOVS? LDR r4,[r1, #12]; dcf_y1 LDR r3,[r0, #4]; dcf_x1 STR r4,[r1, #16]; dcf_y2 = dcf_y1 STR r3,[r0, #8]; dcf_x2 = dcf_x1 STR r5,[r1, #0]; sample STR r2,[r0, #12]; dcf_y1 = result STR r5,[r1 ,#4]; dcf_x1 = sample BX LR ENDP ALIGN END }
1 Answer
10 years, 5 months ago.
Hi,
According to the AAPCS (ARM Archtecture Procedure Call Standard), a subroutine must preserve (into stack) the contents of the registers r4-r8, r10, r11 and SP before they are used. Please see more detail in section 5.1.1 Core registers of AAPCS.
Regards, Toyo