Кратчайшая возможная программа GAS ARM (linux)? - PullRequest
1 голос
/ 25 февраля 2011

Я поиграл с идеей изучения ассемблера и решил попробовать ARM. Я решил пойти с ассемблером GNU, в основном потому, что он доступен в репозитории моего мобильного телефона, чтобы я мог поиграть со сборкой где угодно, если мне скучно.

В любом случае, я искал в Интернете, но не могу найти какой-либо справки о том, как правильно выйти из двоичного файла ARM Linux. Я понял, что эквивалент x86 в основном устанавливает регистр eax в число, определяющее системный вызов, а затем вызывает системное прерывание 0x80, чтобы фактически выполнить системный вызов, правильно выйдя из программы; Теперь я хочу сделать что-то подобное для ARM (и, очевидно, тот же код не работает, так как он использует специфичные для x86 регистры и еще много чего).

Так что да, в принципе, как бы я написал минимальный исполняемый файл GAS ARM, просто выйдя нормально со значением выхода 0?

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Информацию о системных вызовах можно получить по адресу http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3105/4.. Вы также можете посмотреть страницу 5 из http://isec.pl/papers/into_my_arms_dsls.pdf.

0 голосов
/ 02 марта 2015

teensy.s

.global _start
.thumb_func
_start:
    mov r0, #42
    mov r7, #1
    svc #0

Makefile

CROSS_COMPILE?=arm-linux-gnueabihf-

teensy:
    $(CROSS_COMPILE)as teensy.s -o teensy.o
    $(CROSS_COMPILE)ld teensy.o -o teensy
    ls -l teensy
    $(CROSS_COMPILE)objdump -d teensy.o
    $(CROSS_COMPILE)readelf -W -a teensy

clean:
    rm teensy teensy.o
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...