Olen oppinut yliopistossa 68HC11. Niitä on helppo työskennellä, mutta rehellisesti sanottuna useimmat pienitehoiset mikro-ohjaimet ovat samanlaisia (AVR, 8051, PIC, MSP430). Suurin asia, joka lisää monimutkaisuutta mikro-ohjainten ASM-ohjelmoinnissa, on tuettujen muistin osoitetilojen määrä ja tyyppi. Sinun tulisi ensin välttää monimutkaisempia laitteita, kuten korkeamman tason ARM-prosessoreita.
Suosittelisin todennäköisesti MSP430: ta hyväksi lähtökohdaksi. Ehkä kirjoittaa ohjelman C-muodossa ja oppia korvaamalla erilaiset toiminnot inline-kokoonpanolla. Aloita yksinkertaisella tavalla, x + y = z jne.
Kun olet korvannut funktion tai algoritmin kokoonpanolla, vertaa ja vertaa sitä, miten koodasit sen ja mitä C-kääntäjä loi. Tämä on luultavasti yksi parhaista tavoista oppia kokoonpanoa mielestäni ja samalla oppia kääntäjän toiminnasta, mikä on uskomattoman arvokasta upotettuna ohjelmoijana. Varmista, että poistat optimoinnin C-kääntäjässä ensin, tai muuten kääntäjän luoma koodi todennäköisesti hämmentää sinua. Ota optimoinnit asteittain käyttöön ja huomioi kääntäjän toiminta.
RISC vs. CISC
RISC tarkoittaa 'pienennettyä käskyjoukon laskentaa', se ei viittaa tiettyyn käskyjoukkoon, vaan vain suunnittelustrategiaan, joka sanoo CPU: lla on minimaalinen käskysarja. Harvat ohjeet siitä, että kukin tekee jotain perusasioita. Se ei ole tiukasti tekninen määritelmä sille, mitä se tarvitsee 'olemaan RISC'. Toisaalta CISC-arkkitehtuureilla on paljon ohjeita, mutta jokainen 'tekee enemmän'.
RISC: n tarkoituksenmukaiset edut ovat, että suorittimen suunnittelu vaatii vähemmän transistoreita, mikä tarkoittaa vähemmän virrankulutusta (iso mikro-ohjaimille), halvempaa valmistaa ja korkeampia kellotaajuuksia, mikä johtaa parempaan suorituskykyyn. Pienempi virrankulutus ja halvempi valmistus ovat yleensä totta, parempi suorituskyky ei ole oikeastaan saavuttanut tavoitetta CISC-arkkitehtuurien suunnitteluparannusten seurauksena.
Lähes kaikki suorittimen ytimet ovat nykyään RISC- tai 'keskitason' malleja. Jopa tunnetuimmalla (tai surullisemmalla) CISC-arkkitehtuurilla, x86. Nykyaikaiset x86-suorittimet ovat sisäisesti RISC: n kaltaisia ytimiä, joiden etupäässä on pultattu dekooderi, joka hajottaa x86-ohjeet useiksi RISC: n kaltaisiksi ohjeiksi. Mielestäni Intel kutsuu näitä "mikro-opiksi".
Mitä (RISC vs. CISC) on helpompi oppia kokoonpanossa, mielestäni se on heitto. Jotain tekeminen RISC-käskysarjalla vaatii yleensä enemmän kokoonpanolinjoja kuin saman tekeminen CISC-käskysarjan kanssa. Toisaalta CISC-käskysarjoja on monimutkaisempi oppia käytettävissä olevien ohjeiden määrän vuoksi.
Suurin osa syistä, miksi CISC saa huonon nimen, on se, että x86 on ylivoimaisesti yleisin esimerkki ja jonka kanssa on vähän sotkua. Luulen, että tämä johtuu lähinnä siitä, että x86-ohjeet on hyvin vanhoja ja niitä on laajennettu puoli tusinaa tai enemmän kertaa säilyttäen taaksepäin yhteensopivuus. Jopa 4,5 GHz: n ydin i7 voi toimia 286-tilassa (ja toimii käynnistyksen yhteydessä).
Mitä ARM on RISC-arkkitehtuuriin, pidän sitä kohtuullisen kiistanalaisena. Se on varmasti kuormavarastoarkkitehtuuri. Peruskäskyjoukko on RISC-tyyppinen, mutta viimeisimmissä versioissa käskyjoukko on kasvanut melko vähän siihen pisteeseen, että pidän sitä henkilökohtaisesti enemmän keskitienä RISC: n ja CISC: n välillä. Peukalo-ohjejoukko on oikeastaan kaikkein 'RISCish' ARM-käskysarjoista.