Добрый день.
Я использую ARM процессор. Пишу программу на Си.
Подскажите возможно ли вызвать ассембреный код функции, расположенной
по известному адресу?
я знаю что функция, которая мне нужна, в асемлерном, виде выглядит так.
Disassembly of section .rel.dyn:
00000258 <.rel.dyn>:
258: 00008404 andeq r8, r0, r4, lsl #8
25c: 00000d15 andeq r0, r0, r5, lsl sp
Disassembly of section .text:
00000260 <f_all>:
260: e52db004 push {fp} ; (str fp, [sp, #-4]!)
264: e28db000 add fp, sp, #0
268: e59f3030 ldr r3, [pc, #48] ; 2a0 <f_all+0x40>
26c: e08f3003 add r3, pc, r3
270: e59f202c ldr r2, [pc, #44] ; 2a4 <f_all+0x44>
274: e7932002 ldr r2, [r3, r2]
278: e5922000 ldr r2, [r2]
27c: e2821001 add r1, r2, #1
280: e59f001c ldr r0, [pc, #28] ; 2a4 <f_all+0x44>
284: e7933000 ldr r3, [r3, r0]
288: e5831000 str r1, [r3]
28c: e1a03002 mov r3, r2
290: e1a00003 mov r0, r3
294: e24bd000 sub sp, fp, #0
298: e49db004 pop {fp} ; (ldr fp, [sp], #4)
29c: e12fff1e bx lr
2a0: 00008184 andeq r8, r0, r4, lsl #3
2a4: 0000000c andeq r0, r0, ip
код в памяти выглядит следующим образом
addr data
0x10260 04 b0 2d e5 00 b0 8d e2 30 30 9f e5 03 30 8f e0
0x10270 2c 20 9f e5 02 20 93 e7 00 20 92 e5 01 10 82 e2
0x10280 1c 00 9f e5 00 30 93 e7 00 10 83 e5 02 30 a0 e1
0x10290 03 00 a0 e1 00 d0 4b e2 04 b0 9d e4 1e ff 2f e1
0x102a0 84 81 00 00 0c 00 00 00 04 b0 2d e5 00 b0 8d e2
мне нужно вызвать функцию f_all()
и вернуться обратно в программу.
Возможно ли такое сделать?