Różnice między mikrokontrolerami

FYI Microsoft Windows od wersji 1.0 pozwala określić kod jako DISCARDABLE, co umożliwia wywalenie go z RAM.

Ogólnie mylicie teoretyczne koncepcje architektury (HarVard wow!) z tym że komputery są jakie są (np. pamięć slow i fast w Amidze) i nie zawsze w praktyce jest tak prosto.

Język C ma standard. I ten standard jest po to aby nie trzeba było zgłębiać architektury procesora, znać rozkazy czy wiedzieć czy dysk jest magnetyczny czy SSD. Jeżeli w programie będzie const int, to kompilator ma się zatroszczyć o to co z tym zrobić.

Reply to
slawek
Loading thread data ...

Bo nie można było użyć switch ew. zwykłego if ???

Reply to
slawek

Mozna bylo, ale nadal adres musial byc znany z gory i tylko kilka dostepnych do wyboru. No chyba, ze chcesz switch na wszystkie mozliwe 256 adresow :-)

A tak prawde mowiac ... kto wie, czy nie efektywniej bylo skopiowac tych kilka procedur niz dorabiac switcha w srodku ...

J.

Reply to
J.F.

W dniu 2016-02-06 00:08, Grzegorz Kurczyk pisze:

Wstępnie zaznaczę, że nie znam kompletnie AVRGCC...

Jeśli tak jest, że w AVRGCC *nie da się* zmienną wskaźnikową wskazać raz na obiekt w pamięci programu, a potem na obiekt w pamięci zmiennych, to jest to tylko ułomność owego AVRGCC. MCS-51 miał jeszcze bardziej porypany model pamięci i do każdej z nich trzeba było się odwoływać innymi instrukcjami maszynowymi. Niemniej kompilator Keila bez problemu sobie z tym radził i standardowe wskaźniki C były implementowane w taki sposób, że takim wskaźnikiem do woli można skakać pomiędzy różnymi rodzajami pamięci MCS-51. Standard C nie wymusza, że wskaźnik musi być li tylko adresem. Wskaźnik jak najbardziej może przechowywać dodatkowe informacje pozwalające na dobranie się do wskazywanego obiektu bez żadnych dwuznaczności. W kompilatorze Keila na MCS-51 wskaźnik zajmował trzy bajty -- jedno pole 8-bit typu pamięci + 16-bitowy adres. Oczywiście były też niestandardowe wskaźniki służące do pokazywania tylko w wybranym typie pamięci -- to dla tych co lubią/potrzebują optymalizować kod.

Napomnę o Modified Harvard Architecture, współcześnie najpopularniejszej, łączącej wspólną przestrzeń adresową i korzyści posiadania dwóch (a może i jeszcze więcej) magistral.

pzdr mk

Reply to
mk

W dniu 2016-02-09 o 00:53, J.F. pisze:

Ale segment mogłes zmienić, oczywiście nie było to atomatyczne, trzeba było załadować rejestr segmentu ale się dało.

A tak masz rację, pomyliło mi się z innym prockiem :)

Reply to
janusz_k

Użytkownik "janusz_k" napisał w wiadomości grup dyskusyjnych:n9g5du$12te$ snipped-for-privacy@gioia.aioe.org... W dniu 2016-02-09 o 00:53, J.F. pisze:

W assemblerze sie dalo, bo w C/model small to nie bardzo. Owszem, wskaznik mogles zadeklarowac huge czy jakos tak, ale funkcje biblioteczne przyjmowaly parametry small.

J.

Reply to
J.F.

W dniu 2016-02-10 o 21:25, J.F. pisze:

Ja akurat pisałem w asemblerze więc nie był to problem :)

Reply to
janusz_k

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.