Consiglia un testo che spiega l'implementazione fisica di C (stack, heap, ecc.) [closed]

2

Una delle domande più popolari su stackoverflow.com è questa:

link

Molte delle risposte sembrano gravitare sul fatto che gli studenti spesso non capiscono cosa sta succedendo fisicamente quando il codice viene eseguito ... la parte più semplice di questo sembra essere stack / heap.

Ho letto due volte K & R e finalmente ho una buona conoscenza della lingua, ma non penso che sia abbastanza. Quasi ogni domanda difficile qui ha il lavoro "stack" o "heap" nella risposta, e mentre ho una comprensione limitata di ciò che significano solo da ricerche di contesto e wikipedia, preferisco l'approccio completo di un libro di testo. Quindi, ti consiglio di consigliare un libro di testo che spieghi cose come stack, heap, allocazione di memoria, ecc. Da un punto di vista fisico, in relazione alla programmazione in C.

Ho provato a fare questa domanda su StackOverflow e apparentemente non era il posto giusto per chiederlo. Quindi spero che questo sito sia in una posizione migliore. In caso contrario, si prega di prendere in considerazione la migrazione al sito di stackexchange corretto. Grazie.

    
posta The111 27.12.2011 - 00:46
fonte

4 risposte

3

Many of the answers seem to gravitate toward the fact that students often don't get a good understanding of what is physically going on when code executes... the very most basic part of this seems to be stack/heap.

Questo è vero. E una delle necessità più importanti per comprendere la macchina è ancora più importante quando si è in C.

Rif: 1
C'è un libro per trattare esattamente questo argomento - Scrivi ottimo codice

Ci sono due volumi del libro: il primo riguarda essenzialmente il modo in cui un tipico libro di architettura macchina. A differenza di molti libri di microprocessori che si concentrano su particolari architetture, ecco un libro che cattura ciò che le astrazioni di alto livello sono importanti al momento della programmazione.

Il secondo volume in realtà ti parla di "Pensare a basso livello, scrivere ad alto livello"

Rif: 2
Se vuoi andare ancora più in profondità, ecco un altro libro - "L'arte dell'Assemblea programmazione della lingua "

Diversamente dalla maggior parte degli altri libri - questo libro introduce il linguaggio dell'Assemblea degli Highlevel. Questo è il miglior riferimento sulla comprensione di basso livello.

Rif: 3
Molti problemi con la programmazione C ruotano attorno all'uso efficace della memoria. Queste astrazioni diventano la chiave per poter scrivere sistemi scalabili in C.

Ecco una buona risorsa che si concentra su questo. link

Spero che questo aiuti.

    
risposta data 02.01.2012 - 08:02
fonte
3

Durante il mio studio ho usato il libro "Programming Language Concepts" (Ghezzi, Jazayeri), che ha una descrizione dettagliata dei modelli di esecuzione (variabili globali, variabili stack, record di attivazione, variabili heap).

    
risposta data 27.12.2011 - 01:33
fonte
2

I primi due capitoli di The Art of Exploitation fanno un buon lavoro nella descrizione della programmazione C da un punto di vista di basso livello : disassemblaggio del codice C, registri CPU, debugging, puntatori e memoria, variabili statiche, segmentazione della memoria (incluso stack e heap) e altro ancora. Nota che il libro sta usando gli strumenti GNU / Linux ( objdump , gcc , gdb , ecc.).

    
risposta data 02.01.2012 - 18:30
fonte
0

Rispondere alla mia domanda. Questo potrebbe non essere il miglior libro per una comprensione esplicita di C, ma è un libro eccellente per imparare come la memoria (e tutto l'hardware) funziona con il tuo software. Mi ha aiutato immensamente. Una volta finito, affronterò alcuni degli altri libri suggeriti dagli altri risponditori (grazie!).

Gli elementi dei sistemi informatici: Costruire un computer moderno dai primi principi

È un libro / corso con il soprannome "da NAND a tetris in 12 passi" che ti insegna come costruire un computer moderno con applicazioni di alto livello partendo da elementari blocchi digitali di base. I progetti del libro includono l'hardware di costruzione (porte, sommatori, ALU, registri, RAM, ROM, CPU e infine un intero computer) e quindi software per esso, iniziando con le istruzioni native della macchina, quindi scrivendo un assemblatore, una macchina virtuale, un compilatore, Sistema operativo e applicazioni. Non c'è davvero niente di simile, un'intera vista dall'alto in basso di un sistema informatico in un digest!

    
risposta data 21.01.2012 - 01:26
fonte

Leggi altre domande sui tag