Maskinkod i processorer
Maskinkod i processorer
När man programmerar tex. en PIC processor lagras programmet i processorns minne.
Man lägger i så kallad hex-kod i minnet.
I vanliga datorer ligger koden på tex hårdisk, laddas in i RAM, processorn får adressen till rätt minnes plats i RAM och sist kör processorn koden.
Funderar lite på hur man skulle kunna få fram rena maskininstruktioner och köra dom.
När man komplierar ett program i tex C blir ju programmet platforsberoende ELLER?
Man lägger i så kallad hex-kod i minnet.
I vanliga datorer ligger koden på tex hårdisk, laddas in i RAM, processorn får adressen till rätt minnes plats i RAM och sist kör processorn koden.
Funderar lite på hur man skulle kunna få fram rena maskininstruktioner och köra dom.
När man komplierar ett program i tex C blir ju programmet platforsberoende ELLER?
Datorn kör alltid rena maskininstruktioner, oavsett om det är en MAC, PC eller PIC.
Det som ligger närmast "rena maskininstruktioner" och som är intressant att använda är assembler, där motsvarar varje kommando (oftast) en instruktion till processorn. Vill du se hur ett program på en pc arbetar kan du ladda hem en disassembler som översätter ett kompilerat program (maskinkod) till assemblerinstruktioner.
Och ja, när du kompilerar ett c-program för en viss processor så översätts din c-kod till maskinkod för just den processorn och blir därmed plattformsspecifik.
Så om du vill "kunna få fram rena maskininstruktioner och köra dom" så är det mest realistiska alternativet att skriva assemblerkod för den plattform det gäller.
Det som ligger närmast "rena maskininstruktioner" och som är intressant att använda är assembler, där motsvarar varje kommando (oftast) en instruktion till processorn. Vill du se hur ett program på en pc arbetar kan du ladda hem en disassembler som översätter ett kompilerat program (maskinkod) till assemblerinstruktioner.
Och ja, när du kompilerar ett c-program för en viss processor så översätts din c-kod till maskinkod för just den processorn och blir därmed plattformsspecifik.
Så om du vill "kunna få fram rena maskininstruktioner och köra dom" så är det mest realistiska alternativet att skriva assemblerkod för den plattform det gäller.
> Man lägger i så kallad hex-kod i minnet.
Notera att "HEX-kod" bara är ett sätt att *koda* rena binära maskininstruktioner
på ett sätt som gör att man kan lagra dom i en text-fil (d.v.s med
enbart "skrivbara" tecken), d.v.s i en HEX-fil.
Men fortfarande är det som ligger i HEX-filen ingenting annan än maskinkod
(samt eventuellt lite "data" för EEPROM och CONFIG bitar).
> Funderar lite på hur man skulle kunna få fram rena maskininstruktioner och köra dom.
Till vadå ? PC eller PIC ?
Till en PIC kan du använda vad som helst, alla "språk" genererar till slut
maskinkod. Vill du ha max kontroll så ligger (som RasmusB helt korrekt
sa) assembler närmast den färdiga maskinkoden.
I databladets kapitel med "Instruktion Set" ser du *exakt* hur varje
assemblerinstruktion kodas som maskinkod bit-för-bit.
Så den som vill kan alltså skriva färdig maskinkod direkt med hjälp av
informationen i databladet och strunta i assemblers och sånt larv...
Notera att "HEX-kod" bara är ett sätt att *koda* rena binära maskininstruktioner
på ett sätt som gör att man kan lagra dom i en text-fil (d.v.s med
enbart "skrivbara" tecken), d.v.s i en HEX-fil.
Men fortfarande är det som ligger i HEX-filen ingenting annan än maskinkod
(samt eventuellt lite "data" för EEPROM och CONFIG bitar).
> Funderar lite på hur man skulle kunna få fram rena maskininstruktioner och köra dom.
Till vadå ? PC eller PIC ?
Till en PIC kan du använda vad som helst, alla "språk" genererar till slut
maskinkod. Vill du ha max kontroll så ligger (som RasmusB helt korrekt
sa) assembler närmast den färdiga maskinkoden.
I databladets kapitel med "Instruktion Set" ser du *exakt* hur varje
assemblerinstruktion kodas som maskinkod bit-för-bit.
Så den som vill kan alltså skriva färdig maskinkod direkt med hjälp av
informationen i databladet och strunta i assemblers och sånt larv...

Isf skulle jag vilja slå ett slag för en god bok i ämnet, tex Modern Operating Systems av Tanenbaum. Den går främst igenom hur lite större OS är uppbyggda. Då jag gissar att du kanske inte vill (eller ens bör) börja med ett OS till motsvarande persondatorer så slår jag även ett slag för google. Många OS till enchipsdatorer finns ju källkoden tillgänglig att lära sig av, men jag skulle nog rösta för att du skaffar nån slags grund i hur tankegångarna går i dom flesta OS.
Dinosaurieboken! den är grym....Mupp skrev:Isf skulle jag vilja slå ett slag för en god bok i ämnet, tex Modern Operating Systems av Tanenbaum. Den går främst igenom hur lite större OS är uppbyggda. Då jag gissar att du kanske inte vill (eller ens bör) börja med ett OS till motsvarande persondatorer så slår jag även ett slag för google. Många OS till enchipsdatorer finns ju källkoden tillgänglig att lära sig av, men jag skulle nog rösta för att du skaffar nån slags grund i hur tankegångarna går i dom flesta OS.