Pisanie kodu asemblera ARM

20

Po otrzymaniu mojego Raspberry Pi zdecydowałem, że chcę nauczyć się pisać kod asemblera ARM. Moje pytanie brzmi: co muszę zacząć? Zakładam, że jest już zainstalowany kompilator, ale nie wiem, co to jest (może gcc?). Każda pomoc jest mile widziana!

ohblahitsme
źródło
Oto kolejna (darmowa) książka o montażu ARM: yurichev.com/writings/RE_for_beginners-en.pdf
Dennis Yurichev

Odpowiedzi:

19

Zależy od tego, ile asemblera chcesz napisać. Jeśli chcesz pisać tylko małe fragmenty osadzone w kodzie C, gccto rzeczywiście jest to, czego szukasz. Przykłady użycia asmdyrektywy w C patrz: odsyłacz do asmline w: ARM GCC Inline Assembler Cookbook

Z drugiej strony, jeśli chcesz napisać więcej niż tylko małe fragmenty, lepiej będzie użyć pełnego asemblera. To będzie dostępny jako albo as, gaslub obu (alias).

I na koniec musisz się trochę dowiedzieć o zestawie instrukcji ARM. Przydatne odniesienie znajduje się w: ARM1176JZF-S Technical Reference Manual .

Uwaga: pamiętaj, które RPi obsługują tylko instrukcje armv6 - więc nie próbuj używać niczego z armv7

Powodzenia!! :)

Maria Zverina
źródło
4

Swoją przygodę z kodem asemblera ARM rozpocząłem niedawno, a oto moje zasoby:

  • Uniwersytet Cambridge opublikował tutaj bardzo przyzwoity zestaw samouczków: Baking Pi . Zawiera szablon własnego systemu operacyjnego, pełne przykłady kodu dla każdego samouczka oraz wszystkie instrukcje dotyczące budowania i uruchamiania kodu.
  • Ponadto ta obszerna książka powinna obejmować wszystkie podstawy: Podręcznik programisty systemu ARM .
Piotr Justyna
źródło
3

Chociaż czuję się komfortowo z interfejsem wiersza poleceń, nie mogłem się oprzeć wygodom GUI. Jakiś czas temu odkryłem, że mogę użyć CodeBlocks IDE do opracowania programów w języku asemblera ARM w Raspberry Pi. Napisałem więc samouczek i dołączyłem do samouczka programowania zestawu Raspberry Pi, który napisałem dla strony z książką montażu Mazidi ARM:

http://www.microdigitaled.com/ARM/ARM_ASM_books.htm

Na stronie kliknij link „Programowanie zestawu ARM za pomocą graficznego interfejsu użytkownika Raspberry Pi”.

Mam nadzieję że to pomoże.

schen
źródło
1

GCC jest instalowane domyślnie. Jeśli jesteś nowy w Raspberry Pi, polecam spojrzenie na łatwiejszy język programowania niż montaż ARM. Nie ma żadnych IDE do złożenia, więc będziesz musiał użyć edytora tekstu i zmontować go za pomocą terminala. Polecam Gedit ze względu na łatwość użycia. Aby uzyskać podświetlanie składni dla asemblera, musiałem przejść do github, a konkretnie do strony shinyquagsire23. To jest bardzo ładne. Co do pomocy Najlepszym zasobem, jaki znalazłem, jest „Raspberry Pi Assembly Language: Raspbian Beginners” Bruce'a Smitha. Możesz go znaleźć na Amazon. Wyjaśnia montaż w jeden z najczystszych i najprostszych sposobów, jakie znalazłem.

Mroczny Ronin
źródło
1

Ucz się z wykonalnymi przykładami

Pracuję nad: https://github.com/cirosantilli/arm-assembly-cheat

Cechy:

  • dokładnie ten sam zestaw można uruchomić na hoście Linux z trybem użytkownika QEMU, dzięki czemu możesz wypróbować rzeczy szybciej na swoim hoście, zanim przejdziesz natywnie na Pi
  • obejmuje zarówno ARMv7, jak i ARMv8
  • dobra konfiguracja GDB po wyjęciu z pudełka, zarówno na hoście, jak i natywnie
  • ma twierdzenia, które pokazują numer linii montażowej, w którym wystąpił błąd
  • korzysta ze standardowej biblioteki C dla IO, co czyni go teoretycznie przenośnym systemem operacyjnym i pozwala na łatwe ponowne wykorzystanie gadżetów takich jak printfimemcpy
Ciro Santilli
źródło