2008-09-26 13 views
22

Chciałbym nauczyć się asemblera. Jednak istnieje niewiele zasobów do robienia asemblera z OS X.Gdzie mogę znaleźć narzędzia do nauki asemblera na OS X?

Czy jest ktoś, kto zaprogramował w zespole na komputerze Mac? Gdzie się uczyłeś?

Czy jest jakiś powód, dla którego nie powinienem robić montażu? Czy ryzykuję (znacząco) awarię mojego komputera nieodwracalnie?

Odpowiedz

13

Jeśli używasz komputera Mac z procesorem PowerPC, spójrz na wbudowany asembler gcc. W przeciwnym razie spójrz na nasm. Nie mogę podać żadnych godnej odniesień do PPC ASM (są nieliczne), ale sugeruję następujące rzeczy do nauki x86 ASM:

Ponadto, jeśli nie jesteś w trybie jądra to nie ma szans Naprawdę, a nawet jeśli jesteś w trybie jądra, naprawdę trudno jest zniszczyć wszystko.

Edycja: GCc i tym podobnych można uzyskać z XCode, a nie Macports lub somesuch. Jeśli nie, masz świat źle spreparowanych plików Mach-O. Niezbyt fajnie jest diagnozować problemy z formatem plików, gdy dopiero zaczynasz hakować asm.

+0

+1 w książce Reversing - doskonała książka. –

0

Nie ma powodu, dla którego nie powinieneś; nie ma nic, co można zrobić w języku asemblerowym, czego nie można zrobić w języku wyższego poziomu, takim jak C.

Jeśli chodzi o narzędzia, możesz zainstalować MacPorts i pobrać GNU asembler. To może, ale nie musi być najłatwiejszy sposób, ale jest za darmo i prawdopodobnie można znaleźć dokumentację samouczka do pisania programów uniksowych w GNU asembler gdzieś w sieci.

1

Kod X (tj. GCC) ma świetne wsparcie dla pisania asemblera. Nauka jest zabawna (chociaż prawdopodobnie nie będziesz jej potrzebować), a najgorsze, co możesz zrobić, to upaść program, który piszesz, tak samo jak w C. Just Google dla samouczka "gcc inline asm x86", a ty powinien znaleźć mnóstwo punktów początkowych. Nie martw się, że niektóre wydają się być specyficzne dla Linuksa, na ogół działają równie dobrze w XCode.

(edycja) ... zakładając, że masz oczywiście Intel Maca; jeśli nie, zamień 'x86' na 'ppc'.

3

Nasm/Yasm to Twój najlepszy zakład; Składnia inline gcc jest dość paraliżująca i może być bardzo bolesna w użyciu, a ponadto są dosłownie pewne rzeczy, których nie może wykonać. Składnia makro Nasm jest również o wiele bardziej użyteczna, niebiański dar w takim języku jak zespół, który nie ma wbudowanych funkcji szablonów.

5

Język asemblera jest określany przez platformę sprzętową, a nie system operacyjny. Biorąc pod uwagę, że OS X działa na platformie Intela i jest 64-bitowy, powinieneś poszukać informacji na temat asemblera x64 (zwanego także AMD64). Sprawdź artykuł w Wikipedii (http://en.wikipedia.org/wiki/X86-64), aby uzyskać wiele linków do dokumentacji na temat x64.

Ponadto dokumentacja narzędzi OS X może zawierać wiele informacji na temat asemblera x64. W szczególności Netwide Asembler (NASM - http://developer.apple.com/documentation/DeveloperTools/nasm/nasmdoc0.html) może posiadać dokumentację dotyczącą budowania aplikacji OS X przy użyciu asemblera.

+0

Uczenie się x86-64 ASM przed uczeniem się x86 ASM przypomina pisanie epickiego wiersza, zanim nauczysz się pierwszego słowa.Tak wiele rzeczy, które będą wyzwalać nowych ludzi. Zdecydowanie nie polecam. –

+0

Napisanie 64-bitowej aplikacji OSX wymaga wysiłku; domyślnie są 32-bitowe. –

+0

To prawda, nie jestem programistą Mac. Jednak OSX jest 64-bitowy i http://www.apple.com/macosx/technology/64bit.html roszczenia Xcode 3.0 wspiera tworzenie aplikacji 64-bitowych, więc czy nie jest to tylko kwestia wyboru programisty? I oczywiście wiedząc, co robisz, ale to samo dotyczy budowania aplikacji 32-bitowych. –

1

here

I zaprogramowany montaż na komputerze Mac. Był to asembler Motorola 680x0 wykorzystujący MPW. Kilka razy dotykałem asemblera PowerPC w CodeWarrior i ProjectBuilder. Teraz ProjectBuilder nazywa się XCode i jest Intel. Asembler jest jednym z wielu narzędzi w XCode.

Pierwotnie nauczyłem się asemblera na Apple II: wbudowanego monitora języka maszynowego 6502, mini-asemblera Sweet16 i innych. Później użyłem asemblera Intel 80186, aby przyspieszyć wolne fragmenty kodu C, i zapłaciłem za jednodniowe szkolenie z asemblera Intela 80186 na uniwersytecie. Później musiałem utrzymywać zespół 680x0 na Macu. To było bardzo dawno temu.

Nie sądzę, że istnieje jakikolwiek powód, aby nie robić montażu. Nauka jest świetna. Dowiedz się wszystkiego, co możesz. Przejdź do debuggera o niskim poziomie i spójrz na zdemontowany kod.

Moja rada brzmi:

nie bój.

5

Aby rozpocząć montaż nauka, warto zacząć od prostych programów w C i poprosić GCC wygenerować kod asemblera dla niego za pomocą opcji -S:

gcc -S hello.c -o hello.asm 

będzie wtedy w stanie zrozumieć jak wywoływać funkcje, przekazywać argumenty itp.

0

Są dwie rzeczy, o których trzeba wiedzieć, aby pisać język asemblacji w systemie z systemem operacyjnym (w przeciwieństwie do zestawu "gołego metalu", który jest światem własnym):

  1. Jak działa zestaw instrukcji - mnóstwo zasobów dla Intel X86, jeśli masz Intel Mac, nadal rozsądny zestaw dla PPC na przykład Mac OS X Internals.

  2. Jak zainstalować połączyć swoje programy - jeśli masz narzędzi programistycznych zainstalowane masz GCC i związane z nimi narzędzia

  3. Jak rozmawiać z OS - oto gdzie montaż Mac jest dużo słabiej udokumentowane niż Windows lub Linux. Być może trzeba napisać równoważne programy C i użyć "gcc -S", aby sprawdzić, które konwencje wywoływania/przywracania stosu są odpowiednie. To zależy od tego, co chcesz zrobić, ale przy minimalnym poziomie potrzebujesz wywołań systemu operacyjnego do przydzielenia IO i pamięci.

Dobrym punktem wyjścia jest here.

0

Jeśli masz Developer Tools zainstalowane, można po prostu otwarty Terminal i rodzaj jak (GNU Assembler - część Binutils).

0

Dla PPC spróbuj Lightsoft

+0

Witryna nie zapewnia już oprogramowania PPC. – Seki

Powiązane problemy