Strona 1 z 1

Konverter Asm na hex dla intel 8051

: 19 maja 2011, 19:25
autor: vampiur
Chciałbym zrobić rzecz wyżej wspomniana rzecz ale nie mam pomysłu jak to ugryźć. Ma ktoś może jakiś pomysł? Ja w swoim myśleniu zaciąłem się na wykminieniu jakiegoś eleganckiego rozwiązania na to jak rozróżniać różne wersje instrukcji(z różnym zestawem argumentów).

Re: Konverter Asm na hex dla intel 8051

: 19 maja 2011, 19:31
autor: anthrax
Sprawdź w repozytorium czy jest as31. To darmowy assembler dla 8051.

Re: Konverter Asm na hex dla intel 8051

: 19 maja 2011, 19:43
autor: vampiur
Dzięki, przeglądam to właśnie, haczyk w tym ze tam jest parę tysi linii kodu. Jakby ktoś miał jeszcze jakieś pomysły to ja chętnie posłucham.

Re: Konverter Asm na hex dla intel 8051

: 19 maja 2011, 23:56
autor: anthrax
Czy mógłbyś dokładnie sprecyzować czego tak naprawdę potrzebujesz? Skoro masz już napisany kod źródłowy to tak naprawdę wystarczy podać ten plik jako parametr do assemblera i w wyniku otrzymasz plik hex który wgrywasz do mikrokontrolera.

Re: Konverter Asm na hex dla intel 8051

: 26 maja 2011, 19:13
autor: vampiur
no ale ja potrzebuje sam mechanizm taki gdzieś wbudować;) i w zasadzie brakuje mi tylko jakiegoś zgrabnego sposobu na rozróżnianie wariantów poszczególnych instrukcji.

Re: Konverter Asm na hex dla intel 8051

: 27 maja 2011, 19:11
autor: beluosus
Po pierwsze nie konwerter (a już na pewno nie przez v!) tylko asembler. Po drugie: hex w sensie Intel HEX (format pliku)? Jeśli tak to ta kwestia nie ma wiele wspólnego z tym o co pytasz. Po trzecie: czy Twoim docelowym zadaniem jest napisanie asemblera? Jeśli nie to użyj gotowego rozwiązania, jeśli tak to jaki masz problem przy rozróżnianiu argumentów? Nie wiem jak działają profesjonalne asemblery ale wydaje mi się, że najpierw trzeba sprawdzić czy zgadza się ilość argumentów dla danego polecenia. Później sprawdzać czy dany "operand" jest rejestrem, akumulatorem, adresem (długim czy krótkim) itd... i na tej podstawie dobrać kod instrukcji. W jaki sposób to zrobić to już zależy od języka programowania jaki wybierzesz. Tutaj masz ciekawy przykład asemblera x86 w perlu: http://www.ericfitchett.com/projects/software/perl-asm.