Che cosa significa. Sezione fare?

A

arvind053

Guest
Ho il seguente frammento di codice nel mio file Assembly (file. ASM):

. sezione. reset 4,1,6 # Metti questo codice in ". init sezione"

Qualcuno può dirmi cosa significa questo?

Quando ho compilare con questo ottengo il seguente avviso:

Nessun comando di linker input file per sezione. Reset.. reset, saranno inseriti per la sezione di uscita. init

Grazie

 
Una direttiva. Sezione è utilizzato per codificare i bit di codice (a seguito della direttiva fino alla successiva. Sezione) con un nome di sezione.Il linker raccoglierà tutto il codice in una particolare sezione denominata insieme, così è concatenato in una zona di memoria, e il linker di solito è dato un file di comando che gli dice che le sezioni di combinare le proprietà di ogni sezione (codice d'accesso, lettura solo, lettura-scrittura, ,...), inizializzato, luogo e che per metterli nel file binario generato dal linker.Quando si compila e link su Windows / Linux / .., il conducente compilatore genera il comando di linker thr file automaticamente (o genera sezioni corrispondenti ai valori predefiniti linker), in modo che il linker produce ciò che il codice C di avvio si aspetta.

Nel tuo caso, sembra che il linker sta facendo ciò che si vuole (perché è mettere il. Sezione reset con la sezione. Init).Se si desidera eliminare l'avviso, si dovrebbe o cambiare il nome della sezione nella direttiva al. Init, o dire al linker di combinare la sezione. Reset con la sezione. Init.Come si esegue questa operazione dipende dal linker: avete bisogno di RTM.

Per farlo funzionare in modo ottimale, se si è raccolta in una sezione di codice è necessario assicurarsi che ogni parte ha aggiunto che è la funzione completa con partenza e ritorno, perché il linker semplicemente concatenare i bit di codice ha aggiunto con un nome di insieme in alcuni arbitraria ordine.Mentre questo andrebbe bene per i dati, non è un genere una strategia efficace per scontato che una sequenza casuale di assemblaggio piccoli pezzi di codice sarà sempre lavorare insieme in modo corretto.

Supponendo che questo sta per essere messo in ROM, qualcosa come il. Sezione init dovrebbe avere codice che si trova ovunque a vostro vettore di reset del processore è l'installazione di hardware, e sia avvia il RTOS o vai al tuo inizializzazione c routine poi a main ().

HTH
Barny

 
Hi barny451,
Io dico, puoi condividere le tue conoscenze di programmazione Assembly o punto noi per qualche località?Ho avuto a che fare con l'assemblea alcune settimane fa e ha fatto girare la testa mia.Potete dirmi se vi è un unico formato di montaggio oggi in voga?(Ho sempre pensato che le istruzioni di assemblaggio sono stati diversi per differenti CPU)?

 
Non ho l'indicazione specifica, ma un rapido per Google. Assembler sezione porta, ad esempio:

http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixassem/alangref/csect.htm

che descrive la direttiva csect che appare la stessa. sezione.Leggere e imparare.

Nella maggior parte dei casi non dovrete preoccuparvi di sezioni, mettere tutto nella sezione di default non specificando uno.Momenti in cui si ci si deve preoccupare sono forse ad esempio, Wen assemblaggio combinando con C / C , quando si specificano l'avvio di codice che deve essere collegato ad un indirizzo particolare, al momento di definire i dati che deve essere a indirizzi specifici (ad esempio, per inizializzare vettori di interrupt).

 

Welcome to EDABoard.com

Sponsor

Back
Top