Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219

    [assembly intel x86]attempt to define a local label ...

    Ho installato nasm su linux e sto provando a compilare un semplice file di cui ho ottenuto l' assembly da un file C.
    Mi da questi errori:
    codice:
    prova.s:1: error: attempt to define a local label before any non-local labels
    prova.s:1: error: parser: instruction expected
    prova.s:2: error: attempt to define a local label before any non-local labels
    prova.s:2: error: parser: instruction expected
    prova.s:3: error: attempt to define a local label before any non-local labels
    prova.s:4: error: attempt to define a local label before any non-local labels
    prova.s:4: error: parser: instruction expected
    prova.s:5: error: attempt to define a local label before any non-local labels
    prova.s:6: error: attempt to define a local label before any non-local labels
    prova.s:6: error: parser: instruction expected
    prova.s:7: error: attempt to define a local label before any non-local labels
    prova.s:7: error: parser: instruction expected
    prova.s:9: error: parser: instruction expected
    prova.s:10: error: parser: instruction expected
    prova.s:11: error: parser: instruction expected
    prova.s:12: error: parser: instruction expected
    prova.s:13: error: symbol `movl' redefined
    prova.s:13: error: parser: instruction expected
    prova.s:15: error: symbol `movl' redefined
    prova.s:15: error: parser: instruction expected
    prova.s:18: error: parser: instruction expected
    prova.s:19: error: parser: instruction expected
    prova.s:20: error: parser: instruction expected
    Il file C non lo posto neanche perchè è un semplice hello world, sintatticamente corretto.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Però dovresti postare il sorgente assembly ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    codice:
    	.file	"prova.c"
    	.section	.rodata
    .LC0:
    	.string	"Hello!"
    	.text
    .globl main
    	.type	main, @function
    main:
    	pushl	%ebp
    	movl	%esp, %ebp
    	andl	$-16, %esp
    	subl	$16, %esp
    	movl	$.LC0, (%esp)
    	call	puts
    	movl	$0, %eax
    	leave
    	ret
    	.size	main, .-main
    	.ident	"GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5"
    	.section	.note.GNU-stack,"",@progbits
    Non so se è assembly x86 , o è nasm che è un assembler per un' architettura diversa dalla mia, oppure con -S viene generato codice assembly che non è per la mia architettura, ma mi pare più probabile la prima ipotesi.

  4. #4
    La butto lì: NASM si aspetta assembly in sintassi Intel, mentre tu glielo stai dando in sintassi AT&T. Verifica se tra le opzioni di NASM c'è uno switch per la scelta della sintassi assembly.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Sì ... ovviamente è così ... e inoltre, non puoi prendere un sorgente assembly generato da un compilatore C e fornirlo "direttamente" (senza una rielaborazione che pensavo tu avessi fatto) ad un assembler.

    Anche le "direttive" e tanto altro, può essere diverso.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    In effetti credo che l'assembly generato da gcc sia digeribile senza rielaborazioni quasi esclusivamente da as (anche se non mi stupirei che nasm e altri assembler generici siano in grado di attivare una qualche "modalità di compatibilità").
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Ho ripreso in mano il codice ora, ma nei flag di nasm non vedo niente per la compatibilità.Ho provato con -t ma da lo stesso quegli errori.
    Inoltre tutti i manuali che trovo hanno una sintassi non accettata da nasm.
    C'è qualche altro software su linux che permetta di compilare AT&T ?

  8. #8
    Non potresti "tradurre" nella sintassi Intel? Tanto è abbastanza corto...

    Io non conosco la sintassi AT&T

  9. #9
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    gcc o gas
    Per gli Spartani e Sparta usa spartan Il mio github

  10. #10
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Ah già, ce l' avevo già installato gas , insieme a gcc.
    Ora ho risolto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.