Można przesyłać programy. W radioelektroniku był również program, który odbierał dane z RSa i zapisywał w pamięci ram. W załączniku jest program "wysyłacz", który pozwala na wysyłanie plików hex do komputerka. Należy podać nazwę pliku (plik musi mieć rozszerzenie .hex), program obsługuje port com1 z prędkością 9600bps. Plik hex i program muszą znajdować...
Wróżki to nie tu. Powiedz jaki błąd. Może niewłaściwy procek ustawiłeś w opcjach kompilatora.
Witam. Na moje oko tego już bardzo nie zoptymalizujesz w C. Pokaż może do czego to Tobie kompilator tłumaczy na asm (plik z rozszerzeniem *.lss). Będziesz miał pojęcie jak takie coś wygląda w asm. Jedyne co widzę na C, to: PORTB |= PORTB_MASK; Masz wykorzystany cały port, więc powineneś napisać: PORTB = 0xFF; Zaoszczędzisz jedną operację odczytu z pamięci...
Sciągnij sobie MIDE-51 to jest fajny kompilator C i ASM. Jak dobrze pamiętam to ograniczeniem dema jest symulacja do 2kB
kompilując plik c dostajesz plik wynikowy. Dużo kompilatorów pozwala użyc przełącznika (opcji) by generował również plik asm. Napisz jaki masz kompilator. Zawsze możesz również zdeassemblowac plik wynikowy
Pokaz plik listingu wygenerowany przez kompilator.
Hey, dopisz w swoim pierwszym poście o który assembler chodzi, to będzie łatwiej odpowiedzieć z przykładem. Jeśli to NASM to możesz liczyć na mnie. ** ok, po krótkiej konsultacji wyszło że chodzi o 16 bitową hybrydę C+ASM. Ze skompilowaniem asm i linkowaniem do 16 bitowca nie ma problemu, pozostał jednak problem z brakiem 16-bitowego kompilatora C,...
tak też robiłem ,ale myślałem że można to zrobić z poziomu kompilatora
Np. Keil. Asemblerow jest od liku. Gorzej z gebugerami, ktore by ladnie pokazywaly testowany material. http://www.keil.com/c51/
Zakladam, ze masz kompilator ASM, ktory tworzy pliki *.HEX... Jezeli nie, to moze ktos cos doradzi, bo ja pisze w C i uzywam zupelnie czego innego... Nastepnie odpalasz np. PonyProg 2000, wybierasz swoja kostke, ladujesz plik HEX i klikasz "Write All"... Oczywiscie, jesli masz juz programator, ale nie chciales, by pisac Ci o podlaczaniu kabelkow, wiec...
Witaj. O jaki kompilator chodzi? Po co chcesz kompilować z hex na bin ? To chyba troche bez sensu. Kompilator powinien kompilować plik typu *.asm na plik *.hex oraz *.bin. Przypuszczam że chodzi Tobie o kompilator do jakiegoś mikrokontrolera więc potem wykorzystujesz (wrzucasz) do niego plik z rozszerzeniem typu hex.Napisz może coś więcej to może coś...
Wypada mnie podziękować. Rzeczywiście, o manualu nie pomyślałem :(...no cóż, pospiec, pilna potrzeba pisania w C. Widzę, że jest tutaj parę różnic, rozumiem, że jest to z przyczyny SDCC. Ale jeszcze jest sprawa. Może nadal czegoś nie doczytałem? W sumie, to sporo tam tego jest, więc pytam Ciebie, ponieważ jesteś już dobrze zorientowany w tym temacie....
oj z tymi podobieństwem bascoma i FastAvr to tak róznie jest. oba to basici więc muszą być podobne ale jak chodzi o konfigóracje to róznice są. w sumie to mam złe skojażenia z tym kompilatorem. tylo jedna żecz jest bardzo dobra czego brakuje w Bascomie , FastAVR przy kompilacji wyrzuca plik ASM a dokładnym opisem no i troszkę inteligentniej stosuje...
#define LCD_DATA_WR (*(unsigned char *)(0x02fff2)) to masz stałą kompilatora.. on wstawi tą wartość do wszytskich plików które przetworzy.. kompilator gcc nieprzetworzy plików asm a więc tam tego niewstawi.. plik asm jest łączony z plikiem C (oba w formie object file) dopiero na poziomie linkera.. p.s. 0xfff2h fajnie to wygląda.. "0x.." to jest znacznik...
Na prawdę do kopiowania nie ma sensu zaprzęgać ASM. Można albo zrobić to właśnie tak, że "skompilować" BATa, albo poleceniem kopiowania plików czy to w TP/FreePascal czy TC++ czy QBASIC (jeśli ma się kompilator, do DOSa 5.0 był dołączony jedynie interpreter). Rozwiązań jest sporo w takiej sytuacji. Oczywiście kompilatory dla DOS! (nie mylić z kompilacją...
Wywala błąd gdyż kompilator nie rozumie polecenia "nop();". Zastąp powyższe przez "asm volatile("nop")" albo dodaj include do pliku system.h w pliku delaya. W pliku system.h masz właśnie definicje nop() jako to co wyżej podałem, zajżyj do tego pliku.
Rzecz polega na tym, że jak załączam plik Startup.s, który znajduje się projekcie Keil'owym, to on nie kompiluje się w środowisku Ride7. Co może być problemem? Inna składnia ASM dla kompilatora Keil'a i Ride7.
../main.c: In function 'sprawdz_czas': ../main.c:6: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int' Przed 6 linijką w main.c masz #include "led7.h" i stąd pojawia się błąd, bo nie masz średników na końcu.
ustaw opcje kompilatora c, by generował również pliki asm. Dla kompilatora cl.exe to przełącznik /Fa. Poeksperymentuj z kilkona prostymi funkcjami w c i będziesz już wszystko wiedział.
z nazwa: 6, tworzy plik z [nazwa]: 2, nie tworzy pliku
Poprawiłem plik tak, by kompilował się na bardzo starej wersji MPASMWIN (jeszcze z epoki DOS i Windows 3.1). Część błędów poprawiłem "na czuja" tzn. domyśliłem się, że błedy w etykietach spowodowane były pomyleniem cyfry 1 z cyfrą 7. Kompilator zakłada, że argumenty liczbowe są w formacie HEX więc przed liczbami dziesiętnymi dostawiłem kropki. Nie widzę...
Oj ale się koledzy nie znają takie programy jeśli chodzi o Asmebler to standard a tym bardziej jeśli idzie o Architekturę komputerów i Dos he,he swego czasu pisałem masę takich programow ale to było z 5 lat temu na studiach A pomysł o skompilowaniu kodu z C++ i wyswietlenie w Asm - większej bzdury nie słyszałem zdajesz sobie sprawę ile kompilator dorzuci...
Po rozbiciu programu na poszczególne pliki musisz w programie głównym dodać je np w następujący sposób: [code] #include <magistrala.asm> #include <Klawiatura.asm> #include <lcd.asm> Acha tworząc nowy projekt musisz dodać te pliki aby kompilator znał ich lokakizację
Jesli masz pliki .asm z programem zapisanym w asemblerze wystarczy je skompilowac i wgrac. Oczywiscie procek musi byc odpowiedni do programu :) Tutaj darmowy kompilator: (atmele at89..) http://plit.de/asem-51/download.htm
Potrzebny Ci kompilator. Najlepiej taki, w którym został napisany kod źródłowy.
Nie polecam avr studio - nie warto żebyś nawet instalował jak do tej pory używasz asemblera. Masz pewnie albo pspad albo programmers notepad wiec ściagnij sobie avr asm 2 ( jedynka tez moze być ale ten ma np wiele poleceń w linii) i do tego plik helpa (tam sa też przykłady komend) i podłącz to wszystko do edytora. W efekcie dostaniesz bardzo wygodne...
piszesz funkcje w ASM pamietajac o tym ktore rejestry uzywane sa do przekazywania parametrow, ktore mozesz zmienic, a ktore musisz zachowac (instrukcja do kompilatora gcc wyjasnia ta kwestie, jest to rowniez poruszone w FAQ dla AVR-GCC). dolaczasz do projektu plik naglowkowy, w ktorym podajesz prototyp funkcji: extern uint8_t funkcja(uint8_t parametr);...
Procesor programujesz plikiem .hex, który jest generowany przez BASCOM podczas kompilacji. Inne kompilatory (C czy ASM) również generują pliki .hex. pozdrawiam, JnS
Funkcje z atrybutem always_inline: W tym wypadku, to akurat sam się upierałeś, że są usuwane NOPy, a teraz wiemy dlaczego: Disasembler (tu tkwi "błąd" myślowy) i plik HEX
Okazalo sie, ze kompilator blednie tworzyl kod wynikowy - po recznej modyfikacji pliku asm wszystko zadzialalo poprawnie. (kompilator PCWH - nie najlepszy...) Temat uwazam za zamkniety - dziekuje za podpowiedzi.
Cześć Wam. Ja mam trochę inne pytanie. Autor opisuje jakie pliki potrzebne są do uruchomienia programów m.in. core_cmx.h, cmsis_gcc.h, stm32fxx.h to dotyczyło akurat kompilatora GCC. Pytanie co z plikami tzw. startowymi w asm i linkera? Zwykle kończą się rozszerzeniem S i ld. CZy one muszą być dołączane, czy tu może codzi o to że tworząc projekt należy...
ASM to poprostu program, który ktoś sobie napisał w kompilatorze- najczęsciej da sie odczytać zwykłym notatnikiem. HEX to plik który pochodzi od zamiany(kompilacji) ów pliku ASM na język maszynowy procesora. Jak go tam umieścić? załatw sobie programator do pica. ich osobiscie nie programuje tak więc poszukaj w dziale "mikrokontrolery"
A więc tak, nie wiem czy to dobry dział gdyż dopiero dzisiaj się tu zarejestrowałem. Uzyskałem przez IDA kod ASM i go z edytowałem(to był kod niekomercjalny).I chcę go skompilować, problem jest taki że kompilatory do Asemblera wywalają błędy.Jeden plik chciał bym skompilować do exe a drugi do dll.Czy ktoś z was może mi pomóc i wyjaśnić co zrobić ?
Witam To była pierwsza rzecz która sprawdziłem, gdyby tak było to odczyt wcześniej zaprogramowanego układu by była nie możliwa, a nawet gdyby to by były same FFFF. uP programuję poza układem. na płytce zgodnie z tym: http://obrazki.elektroda.pl/6315593600_1... . uP zaprogramowany plikiem HeX z innego oprogramowania niż flowcode działa...
Dzięki, a jak w tej jagódce zdefiniowac bit, bo np RED_BIT EQU 2FH.0 jest źle Eeeee... to chyba jakiś staroć :( Zajrzyj tam: http://elektroda.pl/rtvforum/viewtopic.p... Piotrek PS Pamiętaj , by "ręcznie" nadawać rozszerzenia plikom.
Wszystko zależy od kompilatora. Wygeneruj tylko ten kawałek kodu i podejrzyj plik wynikowy (.asm, .lst) następnie kalkulator i licz.... Teraz poważnie, sciągnij jakis symulator i sprawdź. P.S. Gdybyś podał typ procesora, byłoby łatwiej.
Przykład działa poprawnie, przyczynę błędu podał już kol. (at)rajszym . Przyczyną jest nowy, sprytny kompilator. Otóż widzi on, że podana pętla wpisująca wartości 0xAB jest efektywnie odpowiednikiem funkcji memset i zamiast pracowicie robić to co mu nakazałeś (tak robiły kompilatory do momentu wydania książki i jeszcze potem przez jakiś czas), zamienia...
https://obrazki.elektroda.pl/9043858200_... Napisałem, a w zasadzie jeszcze coś nie coś chce napisać, programik który analizuje dane z plików *asm wygenerowanych przez kompilator sdcc dla mikrokontrolerów serii PIC18XXXX. Program ma być pomocny w określaniu zasobów które może zużyć program który piszemy na mikrokontroler. Po prostu...
Ja bym powiedział że z reguły taki wygenerowany kod jaki plik źródłowy. Pokaż kod to powiemy co jest źle. A na razie poeksperymentuj: https://godbolt.org/g/SPVx3F
Prosto: w opcach kompilatora ustaw generownie pliku .SRC a nie .HEX, po kompilacji otwórz ten plik (jest w nim kod asm) i przekompiluj na nowo tym razem już do .HEX ;-). Wstawki w asm zgodnie z opisem w helpie
myslalem, ze to moze jakis tajniacki kod dla jakiegos dziwnego kompilatora. [; 0x41 0x56 0x45!!
O ile się nie mylę kompilator XC8 robi takie sprawdzenie z automatu. (1397) possible hardware stack overflow Jeśli panujesz nad zasobami PIC'a gorzej niż kompilator, to jaki jest sens użycia assemblera? Albert
1. Jeżeli to ma być typowa sygnalizacja świetlna - czyli sekwencyjne przełączanie świateł to po co RTC ??? Wystarczy zwykłe przerwanie od Timer'a ! 2. Jeżeli jednak ma być RTC to jakie "impulsy" kolega chce zliczać ??? - w programie to raczej w takim wypadku trzeba odczytywać non-stop RTC i czekać na odpowiednią godzinę:minutę:sekundę......etc. 3. W...
OK, przyznaję się do błędu, nie przejrzałem dokładnie wszystkich plików. Program oczywiście jest napisany w C, zmyliło mnie umieszczenie ciał funkcji w pliku nagłówkowym, oraz plik asm zapewne utworzony przez kompilator. A co do wielkości, to czy funkcje napisane w BASCOM'ie są identyczne pod względem działania (czy napewno taki sam). Bo w np. te w...
Chcę uruchomić centralkę alarmową sterowaną at89c2051 problem polega na tym, że za nic nie mogę skompilować pliku asm do hex, cały czas komilator wyświetla mi jakieś błedy, plik asm pobrany ze strony radielektronika więc wydaje mi sie, że jest napisany poprawnie, jaki kompilatora używam tide, próbowałem też innych, mam zbudowany programator, całą centralkę...
(at)A.T. To jak przekazuje sę argumenty znajdziesz w opisie ABI kompilatora. Ma to znaczenie tylko jeśli całą funkcję C napiszesz w asemblerze - to znaczy umieścisz ją w odpowiednim pliku .S i wyeksportujesz za pomocą .global. Natomiast jeśli definiujesz funkcję w C i w jej ciele umieścisz wstawkę to odwołujesz się nie poprzez rejestry lecz nazwy zmiennych/argumentów....
mirekk36: "o kompilowaniu ASM i może co? jeszcze jego optymalizacji?" Jak jesteś na 100% pewny że "Chłopów" napisał Słowacki- to sprawdź. "Program stosowany do przetwarzania z zapisu źródłowego na postać binarną jest kompilatorem..." Jeśli używasz mnemoników w ASM-to potem ten plik tekstowy kompilujesz do postaci 0-1. Nie twierdzę że taki program musi...
Nie wiem jakiego kompilatora asm używasz, to co przedstawiam, używam na AVRasm2, który obsługuje preprocesor C oraz mam wygenerowane pliki nagłówkowe C Atmela narzędziem xmlconvert.exe[syntax=c]#ifdef WDP3 #define WDP_2K 0 // ~16ms #define WDP_4K (1<<WDP0)// ~32ms #define WDP_8K (1<<WDP1) // ~64ms #define WDP_16K ((1<<WDP1)|(1<<WDP0))//...
Popatrz na początek swojego pliku makefile, masz tam "include'y" które działają podobnie jak w języku C. Makefile jest rozbity na kilka plików. The include directive tells make to suspend reading the current makefile and read one or more other makefiles before continuing. ([url=https://www.gnu.org/software/make/...
Takie gdzie nie będzie marnowania 4B na ten skok. Może jakieś dyrektywy dla kompilatora są (żeby dołączał pliki na końcu mimo że "include" jest na początku). Niestety nic mi o tym nie wiadomo i ja zawsze stawiam ten skok.
Jak dobrze zauważyłeś można tylko zintegrować z kompilatorem GCC poprzez plik *.cof ale nie można w AVR Studio pisać w C tylko "debagować" a to zasadnicza różnica.
Użyj Atmel Studio lub AVR Studio. WinAVR to pakiet zawierający kompilator C i pochodnych, a tu masz kod w czystym asemblerze.
https://obrazki.elektroda.pl/5132775900_... Chociaż na zdjęciu widać mini płytkę z PIC18F1220, to posłuży ona jedynie do praktycznego zaprezentowania obsługi wątków które zaimplementowałem. Obecne możliwości kodu który chce zaprezentować, to działanie równoległe 2 lub trzech wątków, w tym głównej funkcji main która jest pierwszym wątkiem....
to jak piszesz swoje programy jest zalezne tylko od ciebie [; ja osobiscie az tak daleko bym sie nie posuwal - idzie sie przyzwyczaic do owych ptaszkow (a jak wiadomo jest ich wiecej: /=, <<=, >>=, %=, *=, +=, -=, itd...) zasadniczo gdy szuka sie pomocy na forum, to stosujac takie makra jak u ciebie, musisz tez wrzucac owy plik naglowkowy,...
Witam Co to jest mplab ( rozumiemz że jakiś program). Wnoszę również, że teraz z każdego programu utworzonego w Realizerze muszę wyciągnąć plik asm. dodać do niego "świętą poprawkę" i skompilować od nowa. Niestety nie posiadam żadnego kompilatota, Realizer robił to sam. Gdybyś mógł podać jakiś link skąd pobrać można kompilator Pozdrawiam.
odpal kompilator, najlepiej skopiuj go wcześniej do tego samego katalogu w jakim jest twój program*.asm, wpisz potem nazwę swego pliku, tylko nie może byc ona większa niż 8 znaków.
Wszytskie zmienne daklarowane w C są przekazywane do ASM poprzez rejesrty R0-R7. W opisie kompilatora powinno to być opisane jaka zmienna w jakich rejestrach. C działa na funkcjach gdzie do funkcji są przekazywane oraz odbierane zmienne. Funkcja może być napisana w całości w ASM i wtedy z języka C przekazuje się zmienne właśnie poprzez rejestry. Robienie...
(...) bić, żeby poinformować kompilator, że ma optymalizować kod w C, ale nie pomijać tej wstawki asm(...)? Próbowałem asm volatile (...), nie pomaga. (at)ElektrodaBot jaka dyrektywa działająca tylko na wstawkę asm() w programie w C kompilowanym przy użyciu GCC ochroni ją przed wyrzuceniem przez optymalizację? Bezpośrednia odpowiedź na pytanie Aby...
Ja ze swojej strony polecam D ([url=https://dlang.org/]https://dlang.o... To taki C#, który kompiluje się do kodu natywnego, ma różne modele zarządzania pamięcią (statyczna, dynamiczna alokacja, garbage collector). Można by rzec, że to C++ na sterydach. Co więcej, można robić coś, co w Ruście jest trudne - mieszać ASM/C/C++/D w jednym projekcie. Kiedyś...
A próbowałeś skorzystać standardowo z avr-gcc + bibliotek(avrlib?). Zajmuje to 2 , czy 3 kliknięcia ? :) Dokładniej chodzi mi zawarty tam podprogram avr-as, który według wszelkich znaków powinien być kompilatorem asemblera. Następnie standardowo wydobyć z powstałego plik hex za pomocą avr-objcopy. Disasembler u mnie działa.
Załączam plik do obsługi tego syntezera w c i asm. Przeznaczony jest dla kompilatora Franklin 8051. Podczas initu trzeba wyłączyć IOUpdate i następnie sterować tą linią. Jak nie ma na niej impulsów to prawdopodobnie masz ją wyłączoną. Defaultowo po resecie impulsy powinny być generowane na tej nóżce.
Fakt, przeoczyłem.... To sprawdź czy przy asemblacji (powinien być taki plik, moliwe że z rozszeżeniem .lst, w którym jest kod asm) przy wejściu do podprogramów kompilator odkłada na stosie wszystkie używane w funkcji rejestry.
Witam. Duzo czasu stracilem na szukanie jakiegos przykladu na dolaczenie pliku assemblerowego w z plikami z napisanymi w C. Wiem ze: - rozszerzenie pliku asm konczy sie ".S" -w Makefile trzeba dodac ASRC = nazwapliku.S Nie wiem jak ma wygladac taki plik. Przypuszczam ze plik: asm: .include "m16def.inc" .global nazwa_funkcji,nazwa_funkcji2; nazwa_funkcji:...
..... to w Set Language Tool Locations masz opcję Hi tech PICC Toolsiute? czy nie? Jeżeli nie to wlaśnie nie ma integracji pomiędzy tymi dwoma programami. mam coś takiego: HI-TECH Universal ToolSuite, nie ma tam żadnego Hi-TECH PICC no i jak otworzę plik w c to mogę jedynie go edytować i zapisać pod inną nazwą, jak wywołuję kompilatora Alt+F10 to krzyczy...
Kompilator mówi ci że nie znalazł pliku podanego przez ciebie.
No dobra ale w programie o którym wspomniałem jest to zrobione identycznie ... A możesz nam zdradzić, jakiego środowiska/kompilatora używasz :?: Czy dane, w tym nieszczęsnym pliku tekstowym, są rozdzielone znakami końca wiersza :?: Piotrek
Kompilator kompiluje dobrze. Data = Tablica_SDRAM[Addr]; c58: e59f3288 ldr r3, [pc, #648] ; ee8 <u2isr+0x538> c5c: e5932000 ldr r2, [r3] c60: e59f3288 ldr r3, [pc, #648] ; ef0 <u2isr+0x540> c64: e7932102 ldr r2, [r3, r2, lsl #2] c68: e59f327c ldr r3, [pc, #636] ; eec <u2isr+0x53c>...
Nie da się jakoś podglądnąć tego co wypluje kompilator??? ja podglądnąłem coś takiego z pliku z rozszerzeniem hex (to tylko część) ale to nie po ludzku Powinien być jakiś "asm".
Kilka pytań na początek: 1. Jakiego kompilatora C używasz? 2. Czy próbowałeś zmienić opcję kompilacji - zmienić poziom optymalizacji kodu (przykładowo w kompilatorze Raisonance - Optimization preference=Speed)? Mogę Ci podać przykład kodu w ASM wywoływany jako metoda w C dla kompilatora Raisonance - kawałek biblioteki obsługującej transmisję 1-Wire...
0xGH już wogóle wygląda...innowacyjnie :P Te dwa rejestry co wymieniłeś to nie są komórki pamięci. Rejestry które deklarujesz w plikach nagłówkowych to są już *(adresy w pamięci) , dlatego jest mozliwość postawić tam wskaźnik. A da się postawić wskaznik na np. R2? Spróbuj...;] Procesor ma rejestry robocze , nie wmapowane w pamięć, na których wykonuje...
void Dellay_us(unsigned char czas)//odmierza czas co 1us { for(;czas!=0;czas--) {;} } nie znam PICow, ale jestes pewien, ze dekrementacja, porownanie i skok zajmuja 1 us? jesli Twoj kompilator generuje pliki .asm to zeknij tam, odszukaj funkcje Dellay_us, znajdz petle, poszukaj w jakiejs dokumentacji do assemblera na PICe ile instrukcje wykonywane...
Programatorów na USB nie lubię, przyzwyczaiłem sie do stk200 i nie mam zamiaru go zmieniać. C i innych bascomów te nie lubię bo to ogranicza moją wyobraźnię :] Czyli mówisz że za pomocą Programers Notepad i AVR Dude zaprogramuje procek asemblerem? Z tego co widzę to AVR DUde używa tylko plików *.hex czyli potrzebny mi kompilator na ten format z *.asm....
Mam problem..mianowicie nie sprawia mi trudnosci zaprogramowanie PIca16f84 jezel mam do zassemblowania plik *.asm, natomiast jak moge "przerobic" plik *.psf,ktory tez jest napisany dla tego PIca? MPASM wywala mi mnostwo bledow pomimo tego,ze program jest napisany bezblednie...jakiego kompilatora powinienem uzyc? Przeniesiono z Programowanie Ogólne....
Udało mi się przekompilować kilka plików asm na hex. Nie udało mi się jeszcze z plikiem do skanera (MSCAN). Kompilator jakim kompiluję nie obsługuje procesora Atmel AT89C52, AT89S52 (wyrzuca mi błąd). Jak wiadomo procesory 51' i 52' różnią się między sobą (timery). Oto te po udanej kompilacji:
Dolozylem opcje exportu do asm i jako naglowek do C (*.h). Dzięki - super, majówka zapowiada się kiepsko - zimno i mokro. Więc spróbuję zrobić jakieś demo z takimi plikami. Swoją drogą pomyślałem sobie, że tą samą drogą można tworzyć obrazy ROM z programami BASIC. Czyli: Tworzę właściwy plik crt0.s Tworzę nagłówek z treścią interpretera BASIC również...
W sumie nie pomyślałem, ten plik jest dla wielu procków : http://www.keil.com/dd/docs/arm/st/stm32... Może kompilator optymalizuje ? Pokaż list file z asm...
W asm atmela jest taka możliwość, otwierasz segment .ESEG i piszesz, co ma być w EEPROM, kompilator generuje wtedy oddzielny plik ".eep" do zaprogramowania EEPROM-u, być może jest coś analogicznego w C ?
Też tak miałem. Ale z niechęcią zacząłem pisać w C ze względu na ARMy i teraz nawet nie dotykam się asemblera. poza wstawkami, nie pisze się na RISC-ach w asemblerze. Te architektury są wręcz stworzone dla optymalizujących kompilatorów. Ale nie martw się mamy tu kolegę, który modyfikuje nawet pliki hex z głowy :)
Powinno to wygladac tak: plik .h z definicjami podprogramow czyli int podprogram(void); void podprogram2(int a, char b); plik .c z definicjami funkcji czyli int podprogram(void){ //..tresc funkcji.. } i w pliku glownym programu dodajesz #include <nazwa.h> edit: zaraz.. piszesz w temacie o assemblerze a sciezka...
Eagle, To że asembler w wyniku powinien dać najmniejszy kod to oczywiście wiem.Patrząc na to także skłaniam sie do porządnego poznania sprzętu i zrobieniu tego w asm.Zresztą zawsze tak postepuję.Nie lubie gdy program coś robi ,a ja nie wiem co.Np: mając 89S8252 i 8kb flash'a ,to wszystko co generują kompilatory C jest zbyt wielkie.Moje pytanie było...
Slowko kluczowe extern przed deklaracja obiektu najczesciej stosowane jest w plikach naglowkowych programu. Powoduje ono, ze w tym konkretnym miejscu nie jest przydzielana pamiec dla obiektu, a wiec nie mozna w jednej linijce zdefiniowac tej zmiennej [przypisac wartosci poczatkowej] //naglowek extern char zmienna; //plik zrodlowy zmienna =12; Poprostu...
Plik z rozszerzeniem .lss zawiera kod wynikowy programu w postaci instrukcji ASM. Mozesz sobie zobaczyc jak kompilator przetlumaczyl instrukcje z jezyka C na ASM. Zmieniajac opcje optymalizacji, mozesz sobie porownac jak wyglada kod przed i po optymalizacji i ew. wylapac miejsce gdzie program idzie w krzaki.
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...
No... jak to jak? Uruchamiasz jak każdy plik typu EXE i czytasz komunikaty na ekranie. Uruchomiony ASM51 zapyta Cię grzecznie o nazwę Twojego pliku do skompilowania i będzie czekał na wstukanie tej nazwy z klawiatury. Nazwę podajesz bez rozszerzenia .asm i wciskasz enter. Kompilator napisze na ekranie kilka linijek komunikatów i jeśli wszystko pójdzie...
A jak zapisać takie coś w ASM :) Pytanie pomocnicze - a po co chcesz to napisać w asemblerze? Jeśli pytasz jak to napisać w asemblerze to idę o zakład, że nie napiszesz lepszego kodu niż wygeneruje kompilator. Skompiluj powyższy kod i przejrzyj otrzymany plik lss - będziesz tam miał jego tłumaczenie na asembler, potem sobie możesz go ztuningować.
Jeśli w przerwaniu byś zrobił taką pętlę, to czy z volatile czy bez, będzie kaplica. no zdecydowanie tak - jeśli w przerwaniu zrobić taką pętlę to jasna sprawa. Tylko to już chyba tylko czysto teoretyczny przypadek bo raczej takich pętli to w przerwaniach się nie spotka? Ja tylko pokażę jeszcze asemblera z tego przykładu co opisywałem na blogu bo może...
Ostatnio pisze kompilator asm do 8051 i chciałem użyć gotowego kompilatora as31.exe. Zauważyłem że tekst w oknie konsoli nie chce się przekierować do pliku.Przykład: as31.exe 1.asm >>1.txt Powyższe polecenie wklepane w oknie poleceń nie przekieruje strumienia do pliku "1.txt" który później bym mół użyc do wyświetlania na jakimś oknie windowsa .Czy mógłby...
1. nie definiuj F_CPU w kodzie - zawsze w definicjach w opcjach kompilacji. Jeżeli to i tak jest w jednym pliku, to po co? 4. w definicji delay - wypadałoby dodać volatile, bo inaczej przy kompilacji z optymalizacją opóźnienie zostanie skasowane. Dalej tak generowane opóźnienie będzie zależne od cz. taktowania ;) https://gcc.gnu.org/onlinedocs/gcc/Exten...
Potrafię wyszukać jeśli coś jest prawdą, a nie mitem wyssanym z palca. kompilator nie może zoptymalizować wywołania takiej funkcji, bo jej prototyp jest określony przez typ wskaźnika na funkcję. [syntax=c] void (*ptr)(int); void test(int par) { } void itest(void) { ptr = test; ptr(5); } /* inny plik */ extern void (*ptr)(int); extern void test(int par);...
1. Jak zastosować atrybut "naked" dla obsługi przerwania bo głównie tu kompilator dorzuca od siebie wiele różości. Tak samo jak dla funkcji :D 2. Czy można kompilatorowi zabronić urzywania niektórych rejestrów ? Prawdopodobnie TAK - dokumentacja. Najwięcej radości sprawiłoby mi poznanie metody łączenia plików *.c i *.S mnie kompilator wnerwia komunikatem...
Raz- nie wszyscy- niektórzy piszą w ASM- darmowym- z darmowymi bibliotekami. Dwa- powstanie darmowego GCC chyba było ułatwione przy darmowym kompilatorze ASM- nie było wątpliwości przy licencji. Trzy- Atmel w zasadzie jest pasożytem- łatwo zaimplementować darmowy kompilator C w ich środowisku. I jeszcze to środowisko samo robi plik make. Nie zawsze...
W Dev-C++, okienko „Narzędzia/Opcje kompilatora”, zakładka „Kompilator”, w polu „dodaj do wiersza poleceń kompilatora” postaw ptaszka i wpisz: -S -fverbose-asm -g -O2 Dzięki czemu po kompilacji, w pliku „?????.EXE” otrzymasz asemblerowe źródło programu. Czemu akurat w EXE? A bo ja wiem? Pamiętaj! Kompiluj...
Odnoszę wrażenie, że coś cięźko się tu dogadać. Program napisany w C i skompilowany do postaci .hex jest równorzędny programowi napisanemu w ASM i skompilowanemu do .hex. Jedyny problem może polegać na tym, że kompilator Keil, który tu został wymieniony w wersji shareware ma zablokowaną możliwość generowania plików .hex. Aczkolwiek kompilatorów jest...
A nie prościej, void czekaj_us(unsigned int i) { for(;i!=0;i--) ; } o ile kompilator nie wywali w ogóle funkcji to dodać te nopy: void czekaj_us(unsigned int i) { for(;i!=0;i--) asm("nop"); } A te wartości kiedy są liczone? podczas programu czy już na etapie kompilacji? No i po co...
www.avrside.fr.pl b.fajny IDE dla AVR, koloruje kod, można używać kompilatora GCC (z tego co pamiętam to także, albo podstawowym kompilatorem jest właśnie WINAVR), generuje pliki coff dla AVRStudio, które pozwalają na symulowanie przebiegu programu. W AVRStudio widać wtedy kod C lub można zobaczyć kod asm. Na tej stronie jest teżś opisane jak zintegrować...
Mam teraz jeszcze jedno pytanie czy wstawki asemblerowe można dowolnie mieszać z kodem C czy też są jakieś specjalne znaki (typu <?php w htmlu) może istnieje jakaś funkcja? Jest słowo kluczowe (pseudofunkcja) asm. W najproszym przypadku składnia wygląda tak: asm ("sleep"); gcc ma dodatkowo specjalny sposób przekazywania do instrukcji...
siema! Zdaje mi się że trzeba jeszcze lock bity ustawić (tak to sie chyba nazywa).Własnie tak się chyba wtedy dzieje - nie możesz nic zczytać bo jest ustawiona ochrana przed zczytaniem flasha. Pozdrawiam Co do plików nagłówkowych do masz je w katalogu ...\SDCC\include\mcs51 . W kodzie źródłowym wystarczy że wpiszesz n.p. "#include <8051.h>" bez...
Skąd wiedzałeś żeby użyć akurat rejest 3 i 4 ? register uint8_t pwm_val asm("r2"); register uint8_t pwm_mask asm("r3"); Stąd że r0 i r1 były już wykorzystane i poprostu wykorzytałeś 2 kolejne/wolne ? I czy moge wykorzystywać to ot tak w innych programach gdzie liczy się czas instrukcji. http://www.nongnu.org/avr-libc/user-manu...
wilku_88 -> jak widzisz w asemblerze też trzeba się nagłówkować aby dobrze optymalizować. A jak już zauważyłeś czy zobaczysz w przyszłości przy takich porównianiach swoich programów napisanych w C i w asemblerze to tak jak mówił kolega wyżej - zajrzyj sobie zawsze do pliku z wygenerowanym kodem w asemblerze przez kompilator C ;) .... tam będziesz miał...
W tej chwili piszę w ASM, ale używam kompilatora C (robię wstawki ASM) I mam pytanie czy jest jakiś dobry kompilator do ASM ? Najlepiej taki który "znał" by nazwy rejestrów, bo ciągłe sprawdzanie jaki adres ma MODER czy OTYPER itd jest troszkę uciązliwe To może poczytaj w jaki sposób pisać wstawki asemblerowe w C. gcc ma swój asembler, możesz napisać...
bascom kompilator dobra kompilator cross kompilator
spawarka napiąć klawiatura znaki większości naprawa głośników altus
Scania 8449 - Numer części, kod błędu, model pojazdu Zgubiony kluczyk do Hyundai Getz 1.3 benzyna - co zrobić?