Chcę nauczyć się programowania w asemblerach dla PowerPC i ARM, ale nie jestem w stanie kupić prawdziwego sprzętu do tego celu. Zastanawiam się nad wykorzystaniem QEMU do tego. Jednak nie jestem pewien, czy wystarczająco dobrze emuluje obie architektury, że skompiluję i uruchomię moje programy w natywnym asemblerze na tym komputerze?Czy QEMU jest dobre do programowania programowania w asemblerach dla ARM i PowerPC?
Odpowiedz
QEMU działa dobrze dla programu testów korekta (tzn czy kod będzie poprawnie działać na rzeczywistej ARM lub PowerPC), ale to nie jest dobre dla programu testów sprawność: emulacja nie jest cykl dokładne i prędkość mierzone z QEMU nie można wiarygodnie (lub nawet niewiarygodnie) skorelować z prędkością na prawdziwym sprzęcie.
Ponadto, QEMU nie przechwytuje niewydzielonych dostępów do pamięci, co nie jest problemem dla emulacji PowerPC (PowerPC toleruje nieprzydzielone dostępy), ale może być dla ARM (niezaalibrowany dostęp, np. Odczyt 32-bitowego słowa w pamięci RAM z adres, który nie jest wielokrotnością liczby 4, będzie działał poprawnie z QEMU, ale wyzwoli wyjątek na prawdziwym procesorze ARM).
Poza tymi punktami, QEMU nadaje się do tworzenia zespołów na ARM lub MIPS (nie wypróbowałem PowerPC, ponieważ znalazłem w tym serwisie stary iBook na eBayu, ale wykonałem montaż ARM i MIPS z QEMU, a następnie uruchomiłem wynikowy kod na prawdziwym sprzęcie i to działało). Możesz emulować cały system i uruchamiać w nim Debiana (w takim przypadku kompilator, linker, edytor tekstu ... również będzie działał w emulacji), lub użyć "emulacji trybu użytkownika", w której uruchamiany jest plik wykonywalny ARM/MIPS bezpośrednio, z opakowaniem, które konwertuje wywołania systemowe na te dla hosta (zakłada to, że hostem jest komputer z systemem Linux). Ta ostatnia jest wygodniejsza (masz dostęp do normalnego katalogu domowego, narzędzia programistyczne są natywne ...), ale wymaga to zainstalowania narzędzi programistycznych. Zobacz buildroot do tego (i link z -static
, to pozwoli uniknąć wielu bólów głowy).
"np. Czytanie 32-bitowego słowa w pamięci RAM z adresu, który nie jest wielokrotnością 4, będzie działało poprawnie z QEMU, ale spowoduje wyzwolenie wyjątku na prawdziwym procesorze ARM)." W rzeczywistości, w niektórych wersjach zestawów instrukcji ARM użycie niezaalecowanych adresów powoduje obrót zawartością, chociaż w ARMv6 i późniejszych obsługiwany jest zwykły, niezaalokowany dostęp (jest to konfigurowalne). http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472c/BABFDBCJ.html – rakslice
- 1. Meta programowania, co jest dobre dla?
- 2. Dobre maniery programowania C
- 3. Dobre praktyki programowania Python do wyliczania list
- 4. Emulacja PowerPC: Qemu, PearPC lub ...?
- 5. Nauka programowania języków programowania
- 6. Jakie są dobre wtyczki do programowania Java w VIM?
- 7. potrzebne książki i strony internetowej sugestię dla zaawansowanego programowania niskopoziomowego
- 8. Jakie są dobre zasoby do nauki programowania sieciowego?
- 9. Czy istnieje biblioteka programowania funkcjonalnego dla .NET?
- 10. Jest groovy potencjalnym językiem programowania dla Androida
- 11. Narzędzia do samouczków programowania?
- 12. Haskell do mobilnego programowania
- 13. Poradniki dla przygotowań do programowania internetowego kwestionuje
- 14. . Język Java dla programowania jednoczesnego
- 15. UML dla języka programowania C
- 16. gVim i wiele języków programowania
- 17. Czy architektura komórki PS3 jest niewłaściwą platformą do programowania gier?
- 18. Co to jest idiom programowania?
- 19. Szablony edytora dla programowania defensywnego
- 20. Która wersja VMware do programowania?
- 21. Czy mogę używać Julii do programowania mojego GPU i procesora?
- 22. Styl programowania sterowników sprężynowych
- 23. Genetyczne algorytmy programowania i wyszukiwania
- 24. Biblioteka programowania liniowego dla iOS
- 25. Narzędzia do programowania środowiska haskell? (Linux)
- 26. Terminologia programowania
- 27. Czy vim jest już wystarczająco dobry do programowania clojure?
- 28. Czy znasz dobry, szybki przewodnik referencyjny dla wielu języków programowania?
- 29. Skróty i funkcje w ramach przygotowań do konkursu programowania
- 30. Który serwer szyn do programowania?
Ponieważ celem Qemu jest bycie emulatorem procesora, prawdopodobnie emuluje on te architektury "dostatecznie dobrze", jeśli docs mówią, że wspierają je – ShinTakezou
ARM uC są tak tanie, że równie dobrze można kupić sprzęt (i JTAG "dongle") . Możesz dostać zarówno za mniej niż 100 USD (w tym koszty wysyłki) z serwisu eBay. Trzeba kochać Chińczyków za tanią elektronikę :) – leppie
Głosowanie w celu zamknięcia jako oparte na opiniach. –