2012-05-22 12 views
8

Desidero programmare l'assemblaggio di finestre a 64 bit (preferibilmente utilizzando NASM). Ho guardato un bel ma su google, ma sembra che non riesco a trovare un compilatore di finestre a 64 bit. Qualche sito menzionato ml64 ma sembra che non sia più incluso in VC++. Ho provato con l'assemblaggio a 32 bit, ma ovviamente si blocca solo sulla mia macchina a 64 bit. È possibile scrivere, compilare ed eseguire applicazioni di assemblaggio a 32 bit su una macchina Windows a 64 bit? O dovrebbe essere scritto e compilato per 64 bit?Assemblatore di finestre a 64 bit

Grazie.

+0

Per la cronaca, ml64.exe è incluso nel mio installazione di VS2010. Non sono sicuro che sia incluso nella versione Express ... – PinnyM

+1

VS2010 Utente espresso qui, ml64.exe è presente nelle cartelle Visual Studio/VC/bin/amd64 e bin/x86_amd64. – DCoder

+0

Se si desidera utilizzare NASM, andare su http://nasm.us e scaricare la versione Win32 di NASM. Funzionerà su un sistema a 64 bit e creerà applicazioni a 64 bit. –

risposta

6

Yasm (*) è un assemblatore riscritto da NASM moderno e multipiattaforma che è in grado di assemblare sia per set di istruzioni x86 che AMD64/x86-64.

Tuttavia ... Ciò che probabilmente si intende è che è necessario un linker per collegare il codice oggetto/file assemblato (s) per creare un file eseguibile. Almeno il pacchetto di progetto MinGW (Minimal GNU per Windows) completamente gratuito viene fornito con un linker (chiamato ld) in grado di assemblare sia eseguibili di Windows a 32 e 64 bit da file oggetto (almeno il formato di oggetto ELF e PE).

È possibile eseguire cross-compilare/creare progetti a 32 bit in un ambiente a 64 bit e viceversa, dato che si forniscono parametri di riga di comando corretti all'assemblatore e al linker. Si prega di fare riferimento alla documentazione degli strumenti di vostra scelta per i dettagli più precisi.

*) http://yasm.tortall.net/

+0

Penso che ld sia solo il linker .. –

+0

Questo è corretto. Grazie per averlo sottolineato, ho completamente frainteso il contesto in fretta e ho mescolato la terminologia. Ho modificato e migliorato la risposta per ulteriori dettagli. – zxcdw

+0

Grazie mille per il tuo post. Sto usando ld per collegarlo ma sembra che stia ancora andando in crash. È possibile che tu mi fornisca uno snippet di codice assembly che possa essere compilato con yasm ed essere collegato su un sistema a 64 bit, ma scritto in assembly a 32 bit? Non deve fare nulla. Basta compilare ed eseguire senza crash. Sarebbe grandioso. –

3

È possibile scrivere, assemblare ed eseguire assembly a 32 bit su Windows a 64 bit. Ho scritto alcune utility in masm32 sulla mia macchina Windows 7 x64. Se si desidera assemblare codice a 64 bit, credo che FASM supporti il ​​codice oggetto a 64 bit.

Problemi correlati