Utilizzo di Visual Studio 2008 per assemblare, collegare, eseguire il debug ed eseguire il codice assembly MASM 6.11

StackOverflow https://stackoverflow.com/questions/112412

Domanda

Vorrei usare Visual Studio 2008 nella massima misura possibile mentre compilavo / collegavo / costruivo / etc codice in modo efficace come se tutti questi processi di compilazione fossero eseguiti dagli strumenti forniti con MASM 6.11. La versione esatta di MASM non ha importanza, purché rientri nell'intervallo 6.x, poiché è quello che il mio college sta usando per insegnare l'assemblaggio a 16 bit.

Ho svolto alcune ricerche sull'argomento e sono giunto alla conclusione che esistono diverse opzioni:

  1. Riconfigurare VS per chiamare gli eseguibili MASM 6.11 con gli stessi flag, ecc. come farebbe in modo nativo MASM 6.11.
  2. Crea file batch intermedi che saranno chiamati da VS per invocare i comandi corretti per il linker di MASM, ecc.
  3. Riconfigura gli strumenti / le regole di build integrati di VS (assemblatore, linker, ecc.) per fornire un ambiente identico a quello utilizzato da MASM 6.11.

L'opzione (2) è stata menzionata quando mi sono reso conto che le opzioni disponibili in VS "Strumenti esterni" l'interfaccia potrebbe non essere sufficiente per invocare correttamente gli strumenti di compilazione di MASM, quindi un file batch per interpretare il metodo rigoroso di VS di passare argomenti potrebbe essere utile, poiché molti dei miei apprendimenti su come farlo funzionare coinvolgono il mio ML.exe chiamante manualmente, LINK.exe , ecc. dal prompt dei comandi.

Di seguito sono riportati alcuni link che potrebbero rivelarsi utili per rispondere alla mia domanda. Tieni presente che li ho letti tutti e nessuno è la soluzione reale. Spero solo che la mia specifica di MASM 6.11 non impedisca a nessuno di contribuire con una risposta forse più generalizzata.

Metodo simile usato all'opzione (2), ma gli utenti sul thread non sono contattabili:
http://www.codeguru.com/forum/archive/ index.php / t-284051.html
(Inoltre, ho i miei dubbi sulla necessità di un file batch intermedio)

Spiegazione non aggiornata della mia domanda:
http://www.cs.fiu.edu/~downeyt/cop3402/ masmaul.html

Probabilmente la cosa più vicina a cui sono arrivato a una soluzione definitiva, ma fa riferimento a una suite di strumenti di qualcosa oltre a MASM, utilizza anche un file batch:
http://www.kipirvine.com/asm/gettingStarted/index. htm # 16 bit

Mi scuso se la mia terminologia per gli strumenti utilizzati in ogni passaggio del codice - > il processo exe è spento, ma dal momento che sto cercando di riprodurre tutti i passaggi tra il completamento della scrittura del codice e la generazione di un eseguibile, non penso che importi molto.

È stato utile?

Soluzione

Esiste un file di regole MASM in (sistema a 32 bit rimuovi (x86) ):

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCProjectDefaults\masm.rules

Copia quel file nella directory del tuo progetto e aggiungilo alle Regole di costruzione personalizzate per il tuo progetto. Quindi " Modifica file regola ... " ;, seleziona la regola di creazione MASM e " Modifica regola di costruzione ... " ;.

Aggiungi una proprietà:

  • Tipo di proprietà utente: String
  • Valore predefinito: *.inc
  • Descrizione: Aggiungi ulteriori dipendenze di file MASM.
  • Nome visualizzato: Dipendenze aggiuntive
  • È di sola lettura: False
  • Nome: Dipendenze aggiuntive
  • Nome della pagina delle proprietà: Generale
  • Commuta: [valvaluzion[

Imposta il valore Dipendenze aggiuntive su [Dipendenze aggiuntive] . La build ora dovrebbe rilevare automaticamente le modifiche a * .inc e puoi modificare le proprietà di un singolo file asm per specificarne altre.

Altri suggerimenti

È possibile creare un progetto makefile. In Visual Studio, in File / Nuovo / Progetto, selezionare il progetto Visual C ++ / Makefile.

Questo ti permette di eseguire un comando arbitrario per costruire il tuo progetto. Non deve essere C / C ++. Non deve nemmeno essere un makefile NMake tradizionale. L'ho usato per compilare un driver usando un file batch e usando uno script NAnt.

Dovrebbe essere abbastanza facile farlo funzionare con la toolchain 6.x MASM.

Vorrei suggerire di definire regole di generazione personalizzate in base all'estensione del file. (Visual Studio 2008, almeno in Professinal Edition, può generare file .rules, che possono essere distribuiti). Lì puoi definire strumenti di compilazione personalizzati per i file asm. Utilizzando questo approccio, dovresti essere in grado di lasciare il passaggio del linker così com'è.

Molto tempo fa, abbiamo usato MASM32 testo link come IDE per aiutare gli studenti a imparare l'assemblaggio. Puoi controllare i loro file batch cosa fanno per assemblare e collegare.

invece di file batch, perché non utilizzare un passaggio di creazione personalizzato definito nel file?

Se stai per usare Visual Studio, non potresti dare loro un progetto scheletro in C / C ++ con il punto di ingresso per un'app console che chiama una funzione che ha un blocco assembly inline vuoto e permetti loro di riempire i loro risultati in esso?

Perché non usi la guida di Irvine? La libreria di Irvine è carina e, se vuoi, puoi ignorarla e lavorare direttamente con i proc di Windows. Sto cercando una guida come questa, quella di Irvine è stata la soluzione migliore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top