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ć.
Didn't find your answer? Ask the community — no account required.
S
slawek
Bo nie można było użyć switch ew. zwykłego if ???
J
J.F.
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.
M
mk
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
J
janusz_k
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 :)
J
J.F.
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.
J
janusz_k
W dniu 2016-02-10 o 21:25, J.F. pisze:
Ja akurat pisałem w asemblerze więc nie był to problem :)
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.