Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Konwerter plików *.asm do *.c - poszukuję.

popos1 07 Kwi 2012 16:18 2866 20
  • #1 07 Kwi 2012 16:18
    popos1
    Poziom 11  

    Witam,
    Potrzebuję konwerter plików asm na c++
    Pozdrawiam

    Moderowany przez zumek:

    3.1.17. (10.9, 16) Zabronione jest publikowanie wpisów obniżających ogólny poziom dyskusji, wynikających z lenistwa lub zawierających roszczeniowy charakter wypowiedzi.

    0 20
  • #2 07 Kwi 2012 17:14
    popos1
    Poziom 11  

    Potrzebuje coś pozmieniać w pliku asm a do tego potrzebuje konwersje do c żebym mugł skompilować puźniej do µc, konkretnie ze starego AT90S2313-10 na nową atmege8, oto plik:

    Code:
    https://rapidshare.com/files/1428166218/USB90S2313.asm

    chyba że ktoś mi zmieni w nim na atmege8 i częstotliwość 12mhz i kopie z 11.0592mhz i oba zrobi na hex to byłbym wdzięczny
    Programator usb asp
    A konkretnie chce zrobić takie coś:
    Code:
    http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB%20(AVR)_eng.htm

    tylko na atmedze i najpierw na kwarcu 11.0592mha a jak mi przyjdzie paczka z częśćmi to na 12mhz

    0
  • #3 07 Kwi 2012 17:15
    tadzik85
    Poziom 38  

    Odpowiedz gorsza od pytania.

    Na jaki procesor jeśli już o ile chodzi o procesory.

    asm na c++? chyba chłopie stawiasz za duże wymagania?

    Wobec czego należy edytować program asemblera po program tak został napisany.

    0
  • #4 07 Kwi 2012 17:34
    popos1
    Poziom 11  

    acha mówisz że tak, to poradź mi jakim programem mam to zrobić?

    Dodano po 16 [minuty]:

    Bo musi też na hex konwertować

    0
  • #5 07 Kwi 2012 17:36
    tadzik85
    Poziom 38  

    no to pytanie to juz przesada.

    Procek to atmelek wiec chyba logiczne ze AVRstudio co?

    0
  • #6 07 Kwi 2012 18:28
    mirekk36
    Poziom 42  

    popos1 napisał:

    Potrzebuję konwerter plików asm na c++


    A ja uważam, że jest prosta odpowiedź na twoje pytanie.

    oto ona:

    "zapomnij o tym"

    może taka odpowiedź ci wystarczy ? (nie ma takiego czegoś)

    0
  • #7 07 Kwi 2012 18:46
    Macosmail
    Poziom 33  

    Z języka wyższego poziomu na niższy można, ale odwrotnie nie bardzo. HEX to już plik wynikowy po kompilacji dla programatora. Zostaje zapoznać się z assemblerem.

    0
  • #8 07 Kwi 2012 20:07
    popos1
    Poziom 11  

    no i jak mam ten assambler to pozmieniam tam tylko częstotliwość i nazwe procka zapisze w avr studio ale build jest nie aktywne więc potrzebuję innego programu albo sposobu jak ktoś zna

    0
  • #9 07 Kwi 2012 20:14
    jarekz_2
    Poziom 15  

    mirekk36 napisał:
    A ja uważam, że jest prosta odpowiedź na twoje pytanie. oto ona: "zapomnij o tym" może taka odpowiedź ci wystarczy ? (nie ma takiego czegoś)
    Macosmail napisał:
    Z języka wyższego poziomu na niższy można, ale odwrotnie nie bardzo(...)
    A ja podejrzewam, że takie rzeczy istnieją. Przykład zastosowania: reanimacja starych projektów, opartych na jakimś przestarzałym mikroprocesorze i oprogramowanych w asemblerze. Tego typu przypadek mam w pracy (oryginalny procesor jest z rodziny 8051, a ma być zastąpiony przez STM32).
    Konwerter ASM/C miałby zdefiniowane zmienne odpowiadające rejestrom (BYTE R0,R1,...) i tłumaczyłby instrukcje asemblera, np.
    ADD R4,R5
    na instrukcje C:
    R4 += R5;
    byłby to więc swego rodzaju symulator jakiegoś mikroprocesora. Nie widzę jakichś specjalnych trudności technicznych uniemożliwiających opracowanie takiego konwertera.

    0
  • Pomocny post
    #10 07 Kwi 2012 20:22
    dimek6
    Poziom 12  

    Jeżeli ktoś się chce bawić w takie rzeczy to musi sam ręcznie przepisać kod na język z poziomu wyżej. Programu do takich rzeczy nigdzie nie widziałem bo jest to nieopłacalne ze względu na czas i koszt tej operacji.

    0
  • #11 07 Kwi 2012 20:52
    gaskoin
    Poziom 38  

    jarekz_2 napisał:

    Konwerter ASM/C miałby zdefiniowane zmienne odpowiadające rejestrom (BYTE R0,R1,...) i tłumaczyłby instrukcje asemblera, np.
    ADD R4,R5
    na instrukcje C:
    R4 += R5;


    Zauważ, że takie tłumaczenie na C jest trochę bez sensu. Na wyższy poziom trzeba przepisywać sobie niestety samemu.

    0
  • #12 07 Kwi 2012 21:10
    popos1
    Poziom 11  

    No to rozwiązane nie da się - to tylko mam pytanie czy zna ktoś odbiornik ir na usb żeby sterować kompem (proszę o link)?

    0
  • #13 07 Kwi 2012 21:52
    mirekk36
    Poziom 42  

    jarekz_2 napisał:
    A ja podejrzewam, że takie rzeczy istnieją.


    No tak, niektórzy nawet podejrzewają, że Yeti też jeszcze istnieje.

    jarekz_2 napisał:
    Przykład zastosowania: reanimacja starych projektów, opartych na jakimś przestarzałym mikroprocesorze i oprogramowanych w asemblerze. Tego typu przypadek mam w pracy (oryginalny procesor jest z rodziny 8051, a ma być zastąpiony przez STM32).
    Konwerter ASM/C miałby zdefiniowane zmienne odpowiadające rejestrom (BYTE R0,R1,...) i tłumaczyłby instrukcje asemblera, np.
    ADD R4,R5
    na instrukcje C:
    R4 += R5;


    Taaaak super, ;) deasemblacja HEX'a czy BIN'a z procka 8051 do C wprost na STM .... no rewelacja. (Jeszcze żebyś mówił o języku C na platformach pracujących pod jakimiś systemami - to hmmm no można by zrozumieć to co tu opowiadasz, ale nie - ty piszesz o prockach. A co tam różnice między nimi - no nie?) Jak byś już gdzieś podejrzał coś takiego to daj znać OK ? ;)


    jarekz_2 napisał:
    byłby to więc swego rodzaju symulator jakiegoś mikroprocesora. Nie widzę jakichś specjalnych trudności technicznych uniemożliwiających opracowanie takiego konwertera.


    Myślę, że to fajne wyzwanie dla ciebie skoro nie widzisz trudności - "Just Do It, please". Wszyscy na to czekamy.

    0
  • #14 07 Kwi 2012 22:00
    gaskoin
    Poziom 38  

    Ciekawe czy kolega wstecznie doszedłby do takiego kodu (w uC bez FPU)

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Powodzenia w podanym sposobie konwersji z ASM na C.

    0
  • #15 07 Kwi 2012 23:41
    sorex86
    Poziom 15  

    Skoro nie ma to koledzy odkryli dziure w rynku :P Czy jest na to zapotrzebowanie, watpie? No ale to zawsze jakis plus wynikajacy z tego tematu ...

    0
  • #16 08 Kwi 2012 00:11
    gaskoin
    Poziom 38  

    Tu nie chodzi o zapotrzebowanie, fizycznie jest to trudne do wykonania. Zauważcie, że przy kompilacji, optymalizator dużą część kodu zjada, czasem tnie na kawałki i trochę go przekłada. Nigdy nikt nie będzie w stanie przetłumaczyć ASM na logicznie napisane C. Choćby z tego powodu, jaki podałem w tym poście wyżej, lub z takiego, że w asmie makra typu GPIOD->CRL = GPIO_CRL_MODE11 | GPIO_CRL_MODE12 są tłumaczone na coś typu:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod po takiej konwersji wstecz będzie wyglądał jak rzygi. Długie funkcje inline też by wyglądały przecudownie. Suma sumarum prościej zrozumieć assemblera niż twór który powstał by po jego konwersji do C.

    0
  • #17 08 Kwi 2012 00:41
    mirekk36
    Poziom 42  

    W ogóle nawet deasemblery - czyli te które tłumaczą kod binarny na asembler (bo takie cudeńka to są) ...... też robią to po swojemu i nigdy nie będzie taki zdeasemblowany kod wyglądał tak pięknie jak go stwórca napisał ;) z pięknym podziałem na pliki, funkcje, .... a może jeszcze labele od autora by się przydały ? ;) .....

    0
  • #18 08 Kwi 2012 13:08
    popos1
    Poziom 11  

    No to tyle tylko czy ktoś wie jak mam przerobić go na wsad do procka (hex)?

    Code:
    https://rapidshare.com/files/1428166218/USB90S2313.asm

    0
  • Pomocny post
    #19 08 Kwi 2012 13:29
    Macosmail
    Poziom 33  

    Trzeba skompilować w np. AVR Studio, ale czy to się uda z ATtiny na ATmega wątpię. W końcu soft USB na AVR to niezły popis umiejętności i raczej Autor nie martwił sie o przenośność kodu tylko miał inne priorytety.

    0
  • #20 08 Kwi 2012 14:03
    popos1
    Poziom 11  

    to trudno zamykam temat dzięki za wszystko, polecą kciuki

    0
  • #21 09 Kwi 2012 14:07
    jarekz_2
    Poziom 15  

    mirekk36 napisał:
    (...)deasemblacja HEX'a czy BIN'a z procka 8051 do C(...)
    Temat dotyczy konwersji kodu z pliku ASM. Wszystkim nie odróżniającym tekstu asemblera od pliku HEX i BIN polecam na początek choćby lekturę odpowiednich zapisów w Wikipedii. A może to tylko objawy świątecznego obżarstwa na wielką skalę? Jeśli tak, to życzę rychłego powrotu do zdrowia.

    Gaskoin napisał:
    (…)Nigdy nikt nie będzie w stanie przetłumaczyć ASM na logicznie napisane C(…)
    A używałeś ostatnio jakiejś wyszukiwarki internetowej? Bo jeśli nie, to nic dziwnego, że nie słyszałeś np. o firmie MicroAPL.
    Ciekawe czy kolega wstecznie doszedłby do takiego kodu
    volatile float a = 1.3456;
    volatile float b = 1.2345;
    a = a*a*b*b;

    *(volatile uint32_t *)(0x128378124) = 0x012384124;
    Kod po takiej konwersji wstecz będzie wyglądał jak rzygi.

    Programy generujące pliki asemblera z plików źródłowych C mimo to istnieją. Noszą nazwę kompilatorów (ang. compiler). Tematem wątku jest jednak konwersja w drugą stronę - z asemblera do C.

    0