2011-01-02 5 views
11

Ho programmato da circa 11 anni e ho usato molti linguaggi di programmazione diversi da Python a C.Dove posso conoscere il funzionamento a basso livello del mio computer?

Tuttavia, quello di cui mi vergogno è che mi mancano ancora un sacco di le conoscenze di base di basso livello sul quale tutto questo è costruito su:

  • Come sono esattamente stack e heap di eseguibili costruito e come funzionano

  • Come funziona una CPU

  • Che cosa è un ciclo

  • orologio Che cosa è un bus dati

  • Come fanno a nord e il southbridge sul mio lavoro scheda madre

  • Basso livello logica binaria/calcoli

Quegli sono solo esempi, quello che sto cercando è una buona introduzione su questo, poiché ritengo che questa sia semplicemente la conoscenza necessaria per diventare un buon programmatore.

+1

Duplicati e domande correlate: [qual è un buon libro per imparare come funzionano realmente i computer?] (Http://stackoverflow.com/questions/773704/whats-a-good-book-to-learn-how-computers- lavoro reale), [Apprendimento del livello basso] (http://stackoverflow.com/questions/2440313/learning-about-the-low-level), [Qualcuno può dirmi le basi di come funziona la programmazione per computer? ] (http://stackoverflow.com/questions/273978/can-someone-tell-me-the-very-basics-of-how-computer-programming-works). – gnovice

+0

Il [wiki tag x86] (http://stackoverflow.com/tags/x86/info) ha un sacco di buoni link relativi agli interni dell'hardware della CPU e al linguaggio assembly (ad esempio, tutto ciò che è necessario sapere per guardare un semplice ciclo asm e calcola quanti cicli di clock per iterazione dovrebbe prendere senza errori di cache, su Intel Haswell per esempio). Non tanto sui chipset (southbridge). –

risposta

0

due suggerimenti.

Alcuni libri:

Windows Internals (anche se non per tutte le informazioni si applica ad altri OS'es, ovviamente)

Write Great Code: Volume 1 (e forse volumi successivi)

The Art of Assembly Language (cravatte in con 2 ° suggerimento)

Imparare linguaggio assembly:

Il linguaggio assembly è di livello molto basso. In effetti, è solo una forma leggibile dal punto di vista umano del codice macchina (gli uni e gli zeri, che la CPU capisce). Per comprendere il linguaggio assembly, è necessario comprendere i meccanismi di basso livello. Questo perché molto poco (se possibile) viene gestito automaticamente per te, a differenza dei linguaggi di livello superiore come C# e Java.

1

penso che dovresti iniziare con assembly in quanto linguaggio di programmazione di basso livello. per esempio stack è fondamentalmente l'SP register. quindi conoscere il assembly, i registri della cpu, come le istruzioni vengono recuperate dalla memoria nella CPU e poi eseguite sarà un buon punto di partenza.

0

Sono sicuro che ci sono risorse online per questo tipo di cose, ma questo è anche abbastanza ben coperto in un corso di Computer Architecture come this. Mi è anche piaciuto lo book per quel corso.

Tuttavia, in realtà non copriva abbastanza il lato pratico x86 delle cose a mio piacimento (abbiamo progettato un processore MIPS e scritto codice assembly per esso ed eventualmente un compilatore C per esso).

Per colmare le lacune per ciò che era diverso tra il nostro esempio inventato e la mia macchina attuale, suggerisco l'interno di Windows book. E possibilmente prendendo un OSR course.

Se siete più sul lato Linux, ci sono simili courses e books.

2

Suoni come una lezione che ho preso al MIT chiamato 6.004 è proprio quello che stai cercando. La classe era una specie di sondaggio del computer da zero. Abbiamo iniziato con la teoria dell'informazione (che cos'è l'informazione, come può essere rappresentata come bit, ecc.), Quindi abbiamo parlato dei transistor e poi abbiamo combinato i transistor per creare le funzioni logiche di base e combinato queste funzioni logiche per creare una semplice addizionatrice, ecc. ecc., fino alla costruzione di una CPU rudimentale con un SO di base.

Se ciò suona come quello che stai cercando, è possibile leggere le dispense e i video delle lezioni su course web page. Ha delle cose buone, anche se c'è tutto per gli studenti che andranno anche a tenere conferenze, fare laboratori, ecc.

Ho sentito dire che un eccellente libro indipendente che copre sostanzialmente lo stesso materiale è The Elements of Sistemi informatici: costruire un computer moderno dai primi principi, di Nisan e Schocken. Ha esercizi pratici che puoi fare per farcela davvero. Ho comprato il libro su molte raccomandazioni della gente, ma non ho ancora avuto la possibilità di superarlo.

+1

puoi fornire il link ai video, per favore. Non sono riuscito a trovarli e scommetto che sono fantastici. –

+1

@Eric Fortis - Scusa, ho usato il link sbagliato nel mio post! Questa pagina (http://6004.csail.mit.edu/currentsemester/handouts.htm) contiene collegamenti agli appunti delle lezioni e ai video che ho menzionato. –

+0

grazie per il seguito. –

1

Secondo me il modo migliore per impararlo divertendosi. Imparare i compilatori, la progettazione del sistema e l'architettura è molto divertente lavorare con l'interfacciamento di micro-elaborazione. Quindi il mio suggerimento è di iniziare a mettere le mani su un kit Atmel AVR kit o Motorola MSP. Un altro punto di partenza è quello di creare un micro simulatore in qualsiasi lingua preferita e simulare il computer SRC Simple RISC this material, che è da this book.

This is the project Ho fatto in classe utilizzando un MSP430, di nuovo è stato molto divertente.

Problemi correlati