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ć.
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 ...
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.
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.
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.