29
Май
2022

Какой есть аналог ret в ARM32 ассемблере?

В отличие от arm64, в armhf нету инструкции ret, чтобы вернуться из функции. Да вот проблема: я не нашёл рабочего кода для возвращения из функции. Я пробовал отсюда, но ничего не помогло.

Код C:

extern void asmfunc();
int main() {
    asmfunc();
    return 0;
}

Код ASM:

.data
tekst:
    .string "It works!"
    len = .-tekst                                                                         
.text
.global asmfunc
asmfunc:
    push        {r3, r4, lr}
    mov r0, #1
    ldr r1, =tekst
    ldr r2, =len
    mov r7, #64
    swi 0
    pop         {r3, r4, pc}

Makefile:

all:
    @arm-linux-gnueabi-as asm.S -o asm.o
    @arm-linux-gnueabi-gcc -c code.c -o code.o
    @arm-linux-gnueabi-gcc code.o asm.o -o run
 /tmp # ./run
bash: /tmp/run: No such file or directory # [с правами все ок]

Источник: https://ru.stackoverflow.com/questions/1414742/%D0%9A%D0%B0%D0%BA%D0%BE%D0%B9-%D0%B5%D1%81%D1%82%D1%8C-%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3-ret-%D0%B2-arm32-%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80%D0%B5

Тебе может это понравится...

Добавить комментарий