реклама на сайте
подробности

 
 
> Не получаеся вернуться из функции из в ASM коде для ARM7
Bulat
сообщение Apr 8 2009, 05:15
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241



Я привел кусок АСМ-кода, вызывающего функцию 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
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 04:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016