2012-07-18 3 views
1

.s 파일을 직접 사용할 수없는 이유에 대한 설명을 찾고 있습니다..s 파일을 직접 실행할 수 있습니까?

나는 X86_64의 어셈블리 언어를 배우려고 노력하고,이 나에게 어셈블리 코드를 제공합니다

gcc -S sample.c 

왜 내가 직접 nasm를 사용하여 실행할 수 있습니까?

나는 sample.asmsample.s 이름을 변경하고이 작업을 수행하려고 :

nasm -f elf -l sample.lst sample.asm 

그러나 (필요한 경우 게시 할 예정입니다) 나에게 오류를 제공합니다. 중간 파일이 어셈블리 코드에 있다고 생각했습니다. 명확히하십시오.

+0

어쩌면 win32 또는 win64가 아닐 수도 있습니다. 어쩌면 당신은 처음에 모델명을 평평하게 만들거나 뭔가를 넣을 수 있습니다. –

+1

음, [같은 종류의 질문이 방금 요청되었습니다] (http://stackoverflow.com/q/11533478/968261). –

+0

너무 조립을 배우고 있습니다 –

답변

5

아마도 GCC의 어셈블리와 nasm이 사용하는 어셈블리가 동일한 구문을 사용하지 않는 것일 수 있습니다!

GCC는 이른바 AT & T 구문을 사용하지만 nasm은 표준 Intel 구문을 사용합니다. 예 : 차이점에 대한 약간의 정보는 http://en.wikipedia.org/wiki/X86_assembly_language#Syntax을 참조하십시오.

+1

llvm-mc를 사용하여 하나에서 다른 것으로 변환 할 수 있습니다 (약속 없음). –

관련 문제