Maskinkod i processorer

Planering och tankar kring eventuella framtida projekt.
net4all
Inlägg: 538
Blev medlem: 7 februari 2007, 12:06:34

Maskinkod i processorer

Inlägg av net4all »

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?
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

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.
sodjan
EF Sponsor
Inlägg: 43243
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> 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... :-)
net4all
Inlägg: 538
Blev medlem: 7 februari 2007, 12:06:34

Inlägg av net4all »

Om det är som ni säger varför blir programmen begränsade till ett operativsystem?
Man kör ju med samma processor.

edit: Programmen går givetvis inte att flytta mellan tex en RISC och en CISC processor.
Senast redigerad av net4all 7 februari 2007, 17:16:09, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43243
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Därför att "programmen" gör anrop till operativsystemet för en massa
triviala saker. De anropen är (näsan alltid) specifika för resp OS.

Eller vad är det du frågar om igentligen ???
net4all
Inlägg: 538
Blev medlem: 7 februari 2007, 12:06:34

Inlägg av net4all »

Funderar lite smått på eget OS...

(kanske skulle haft det som rubrik...)

Edit: Grejen är den att jag vill kunna ge processorn direkta instruktioner och var hittar jag en enkel disassembler?
Senast redigerad av net4all 7 februari 2007, 17:41:38, redigerad totalt 2 gånger.
eriikh
Inlägg: 258
Blev medlem: 5 maj 2006, 10:52:15

Inlägg av eriikh »

Då har du nog att göra några år framöver, om det är till en pc du menar...

/Erik
Mupp
Inlägg: 134
Blev medlem: 25 februari 2006, 10:30:38
Ort: Linköping

Inlägg av Mupp »

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.
sodjan
EF Sponsor
Inlägg: 43243
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Funderar lite smått på eget OS...

Till vilken HW plattform ?

> och var hittar jag en enkel disassembler?

Till vilken arkitektur ?
(Och varför behöver du det ? Du skulle väl skriva *ny* kod...)

Nåväl, du har nog inte riktigt grepp över (än) vad du tänker ge dig in på... :-)
net4all
Inlägg: 538
Blev medlem: 7 februari 2007, 12:06:34

Inlägg av net4all »

Ok, jag hittade en disassembler och testade på ett enkelt litet program och det blev ju massor med kod!

OS planerna hamnade kort sagt i papperskorgen.
Fortsätter istället med microprocessorer...
sodjan
EF Sponsor
Inlägg: 43243
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> och det blev ju massor med kod

Och dessutom tämligen oläslig kod eftersom du saknar
alla variabelnamn, labels o.s.v o.s.v....
gvs
EF Sponsor
Inlägg: 1688
Blev medlem: 18 oktober 2003, 14:20:34
Ort: Göteborg
Kontakt:

Inlägg av gvs »

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.
Dinosaurieboken! den är grym....
net4all
Inlägg: 538
Blev medlem: 7 februari 2007, 12:06:34

Inlägg av net4all »

Tämligen oläslig var exakt rätt svar :(
sodjan
EF Sponsor
Inlägg: 43243
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Men exakt vad som kan förväntas från en disassembler... :-)

Det *kan* gå hyggligt att läsa koden om den kommer från en
"snygg" assembler-källkod från början, men de flesta 3G språk ("C" o.s.v)
ger oftast en alldeles för grötig (men antagligen helt fungerande!) maskinkod.
net4all
Inlägg: 538
Blev medlem: 7 februari 2007, 12:06:34

Inlägg av net4all »

Läser lite i "Instruktion Set" delen och det verkar inte vara altför svårt/krångligt :)


Det blev massor med ASM kod och det mesta fick jag inte ut nått vettigt ur..
Annars funkade allt bra.
Skriv svar