Я привел кусок АСМ-кода, вызывающего функцию reverse5. По завершению ф-ии reverse5 делаю возврат: mov r15,r14. Но похоже возврата не происходит.. Почему? ;------------------------------------------------------------------------------- reverse5: ldr r5,=0x10 mov r4,r7 and r4,r4,r5 movs r5,r4,LSR#4 ;b[0] = (x & 0x10) >> 4, ãäå r7=x ldr r4,=0x1 and r5,r5,r4 ;b[0] = b[0] & 0x1 str r5,[r13,#30] ldr r5,=0x8 mov r4,r7 and r4,r4,r5 movs r5,r4,LSR#2 ;b[1] = (x & 0x8) >> 2, ãäå r7=x ldr r4,=0x2 and r5,r5,r4 ;b[1] = b[1] & 0x1 str r5,[r13,#31] ldr r4,=0x4 and r5,r7,r4 ;b[2] = x & 0x4 str r5,[r13,#32] ldr r5,=0x2 mov r4,r7 and r4,r4,r5 movs r5,r4,LSL#2 ;b[3] = (x & 0x2) << 2, ãäå r7=x ldr r4,=0x8 and r5,r5,r4 ;b[3] = b[3] & 0x8 str r5,[r13,#33] ldr r5,=0x1 mov r4,r7 and r4,r4,r5 movs r5,r4,LSL#4 ;b[4] = (x & 0x1) << 4, ãäå r7=x ldr r4,=0x10 and r5,r5,r4 ;b[4] = b[4] & 0x10 str r5,[r13,#34] ldr r4,[r13,#30] ldr r5,[r13,#31] and r7,r4,r5 ldr r4,[r13,#32] ldr r5,[r13,#33] and r7,r4,r5 ldr r5,[r13,#34] and r7,r7,r5 ;x = b[0]|b[1]|b[2]|b[3]|b[4] mov r15,r14 ;load LR into PC (r15) [causing a return] ;-------------------------------------------------------------------------------
Main: mov r7,r11 B reverse5
|