Dylemat 51. Szalony pomysl.

Sep 26, 2004 30 Replies

W wiekszosci procesorow operacje typu AND A,A, OR A,A nie nie robia nic, bo cos robia:) A konkretnie ustawiaja stosownie flagi w rejestrze stanu, co ma sporawe zastosowanie.

W procesorach ARM nie ma instrukcji NOP jako takiej. Asembler rozumie jednak ten mnemonik i zamienia na MOV R0,R0 (o tym samym kodzie rozkazu). BTW: W ogóle w ARMie w instrukcji można podać, czy ma zmieniać flagi, czy nie (literka 's' na końcu mnemonika). Można też doczepić działanie w zależności od flag (kolejne kilka literek) tak że konstrukcje w stylu if/then/else/endif robi się "jednym ciągiem" rozkazów wykonywanych warunkowo. I skrzętnie z tej możliwości korzysta np. arm-elf-gcc.

8080 jeszcze. Tam bylo xor a,a - tryb rejestrowy, jeden bajt, jeden cykl.

J.

Czyli w tworcy symulatora nie budzily watpliwosci :-)

Zasadniczo zdziwilbym sie gdyby bylo inaczej, ale kto wie :-)

To by znaczylo ze procek ma jakis latch adresu do tej operacji..

Hm, moze sie myle, ale sfr chyba mozna uzyc jako operanda

A w ogole to spodziewalem sie tu problemow z tym czy wartosc bedzie SP czy SP+/-1. Niby dokumentacja podaje kolejnosc .. ale czy na pewno ?

J.

AlexY napisał(a):

to chyba jakas masowa choroba, bo ja tez musialem sie przez dluzsza chwile zastanawiac o co chodzi i co jest nie tak...:)

Użytkownik Pszemol napisał:

no... w czym piszesz? na jakim poziomie jestes w stanie zoptymalizowac czy tez zdebuggowac kod? ASM czy C. W C mozesz zoptymalizowac kod pod katem sposobu jego dzialania, zastosowac najlepszy algorytm, ale bez wiedzy jaki bedzie wynik assemblacji poszczegolnych polecen C robi sie to na slepo, moze sie okazac ze to co w C jest dluzsze w kodzie maszynowym bedzie krotsze niz dluzszy C. chyba zamotalem :)

moze jestem radykalny w tym wzgledzie ale od lat skladam hold assemblerowi i jak slysze (czytam) o stosowaniu jezykow wysokiego poziomu dla MCS51 to mi rece opadaja :) ale tez mam swiadomosc ze napisanie routera na ARM w ASM jest w praktyce niewykonalne

Kawa³ki kodu s± w C, inne kawa³ki w assemblerze...

Dlaczego nie? Je¶li kod siê mie¶ci, to stosowanie C jest praktyczniejsze bo prowadzi do rezultatów SZYBCIEJ, a wiêc mniejszym kosztem... Elektronika jest dzi¶ tania, pamiêæ za grosze, a czas coraz dro¿szy. To naturalna tendencja, ¿e pamiêci przybywa i programi¶ci przerzucaj± siê na jêzyki wysokiego poziomu...

ASM u¿ywa siê tam, gdzie siê go musi u¿ywaæ - nie oszukujmy siê, nie jest to jêzyk ani naturalny dla cz³owieka, ani wygodny w u¿yciu. Nawet je¶li kto¶ siê nim umie biegle pos³ugiwaæ to nie wszêdzie asm siê nadaje i ma³o tego - nie wszêdzie potrzebna jest taka precyzja programowania aby instruowaæ procesor do pojedynczych poleceñ... Rozdzielczo¶æ jak± daje C, nawet na 8051, jest czasem wystarczaj±ca. Nie ma co posuwaæ siê do asemblerowego fanatyzmu, no nie? :-)

Użytkownik Łukasz Sokół napisał:

[..]

oba zabieraja 2 bajty i jeden cykl maszynowy

Użytkownik Pszemol napisał:

[..]

niemniej sprowadza sie to wlasnie do tego ze program rosnie w sile, znaczy sie w bajty ;)

na szczescie robie dla siebie a nie zarobkowo :) stac mnie na robienie predkosciomierza do samochodu przez pol roku (dziala ale jeszcze go nie skonczylem) z zegarmistrzowska precyzja

no o wlasnie to to ... nie licza sie z pamiecia i cyklami proca... osobiscie optymalizuje tak by wydusic kazdy bajt kodu i zaznaczam sobie elementy ktore moge usunac jesli zabraknie pamieci na nowe featuresy :)

ekhm ekhm... osmiele sie miec w tym temacie odmienne zdanie... jest 10 typy ludzi: ci ktorzy mysla binarnie i ci ktorzy nie ;) nie moje, ale fajne :)

czy ja wiem, program centralki telefonicznej na 51 napisalem w 3 miesiace w ASM, zajmuje 1283 bajty ma obsluge 4Lwew 1Lzew oraz LCD 2*24 na HD44780, sterowanie DTMF. ale drugi raz to bym sie powaznie zastanowil czy na pewno tego potrzebuje ;)

gwoli scislosci nie zamierzam nikogo przekonywac ze C jest be, wolna wola, pragne jedynie pokazac ze mozna inaczej, sam C nawet nie znam, kiedys probowalem ale zostal chyba stworzony po to by zniechecic :)

Wszyscy wiemy, ¿e "mo¿na inaczej". Pytanie tylko czy warto... A co do znajomo¶ci C - warto go znaæ i stosowaæ tam gdzie ma zalety... Dziwie siê ¿e Ci nie podesz³o C, bo wielu mówi ¿e to NIE jest jêzyk wysokiego poziomu, ¿e bli¿ej mu do makroasemblera ni¿ do prawdziwych jêzyków wysokiego poziomu...

No ale chyba zrobi³o siê bardzo off-topicznie, dla mnie EOT.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required