Nie mogę się zorientować, co robi bx lr i czym różni się od bl (etykieta). Wiem, że bl (etykieta) przechowuje adres powrotu tej funkcji w rejestrze linków, ale nie wiem, co robi bx lr.Co robi bx lr w języku asemblera ARM?
8
A
Odpowiedz
16
oznacza branch and exchange instruction set Co oznacza, że zgodnie z lsb (najmniej znaczący bit) adresu do odgałęzienia do, procesor potraktuje następną instrukcję jako ARM lub jako kciuk.
Zwykle posiada adres zwrotny, oznacza to, że jest to zwrot z funkcji, a jeśli lsb z lr
wynosi 1, to kod ten będzie traktowany jako kciuk, w przeciwnym razie potraktuje go jako RAMIĘ.
Powiązane problemy
- 1. Co robi operator/= w języku C#?
- 2. Jak zrobić pętlę w języku asemblera x86?
- 3. Crashlogs: Co to jest "Stan wątku ARM"
- 4. Jak wydrukować numer w zespole ARM?
- 5. Foo.class co to robi?
- 6. Co robi podwójny znak zapytania w języku C#?
- 7. Co dokładnie robi słowo kluczowe "using" w języku C++?
- 8. C# co robi operator ==?
- 9. Co robi * w CSS?
- 10. Co robi% w JavaScript?
- 11. Ramię/Thumb: używanie BX w kodzie Thumb, wywoływanie funkcji Thumb lub przechodzenie do instrukcji Thumb w innej funkcji
- 12. Czy kiedykolwiek będziesz musiał napisać prawdziwy kod w języku asemblera?
- 13. Co Boxen i co robi?
- 14. Co robi operator "jest" w Pythonie?
- 15. Co robi ten kod xkcd?
- 16. Co właściwie robi funkcja Process.Dispose()?
- 17. Co robi znak @ w jQuery?
- 18. Co robi \ 1 w sed?
- 19. Co robi Collections.unmodifiableSet() w Javie?
- 20. Co robi symbol "@" w Powershell?
- 21. Co robi session_destroy() w PHP?
- 22. Co robi? zrobić w Elixir
- 23. Co robi `` ... znaczy w idź
- 24. Co robi rebaseall w Cygwin?
- 25. Co robi "^: static" w Clojure?
- 26. Co [[]] * 2 robi w pythonie?
- 27. Co robi config.gem (w environment.rb)?
- 28. Co {} robi w ciągu znaków?
- 29. Co robi dodatkowy przycisk "$()" w "$ ($())"?
- 30. Co robi% w poniższym kodzie?
Czy możesz uprościć to wyjaśnienie, moja wiedza na temat architektury ARM nie jest tak zaawansowana. – user2177940
https://en.wikipedia.org/wiki/ARM_architecture#Thumb – MByD
@ user2177940 Część 1: Przełączanie trybu. Procesor ARMv7 działa w jednym z dwóch trybów (Called ARM lub Thumb), które różnią się kodowaniem instrukcji (głównie w "kompletnych", ale dużych 4-bajtowych instrukcjach w porównaniu z "ograniczonymi", ale małymi 2-bajtowymi instrukcjami). Który tryb przełączania się na następny jest określany ** w czasie połączenia z 'bx/blx' **, czy adres do skoku jest równy czy nieparzysty (powoduje to przełączenie odpowiednio do trybu ARM lub Kciuk). –