ejecutable funciona en 1 particion pero en otra no

Iniciado por xiruko, 7 Septiembre 2012, 21:53 PM

0 Miembros y 1 Visitante están viendo este tema.

xiruko

buenas a todos,

hace 3 o 4 dias empece con ASM, y la verdad es que de momento solo ha servido para que le tenga una rabia increible a mac... xD

pero bueno al tema, he copiado directamente un programa de una web:
http://fabiensanglard.net/macosxassembly/index.php

el cual es este:
Código (asm) [Seleccionar]

.bss
.data
output:
.asciz "The processor Vendor ID is '%s' \n"
.lcomm buffer, 13

.text
.globl _main

_main:

movl $0, %eax # define cpuid output option
cpuid

movl $buffer, %edi # put values in string
movl %ebx, 0(%edi)
movl %edx, 4(%edi)
movl %ecx, 8(%edi)
movl $0, %ecx
movl %ecx, 12(%edi)

# Now Calling printf

subl $0x4, %esp #padding stack :/ !
pushl $buffer
pushl $output

call _printf #macosx need libc  pre_

# ESP is at 0xXXXXXXX0 now,
# with MacOS X Special stub it will be at 0xXXXXXXXC
call _exit
nop


el codigo lo he compilado de la siguiente manera (tambien especial para mac...):

as -arch i386 -o cpuid.o cpuid.s
ld -e _main -o cpuid -lc cpuid.o


y el problema viene a que, si lo ejecuto en la particion donde esta el sistema, el programa funciona correctamente. pero si lo ejecuto en una particion que tengo para mis cosas, el programa da segmentation fault.

en cambio, si compilo el codigo con:

gcc -arch i386 -o cpuid cpuid.s

el programa funciona en los dos sitios.

alguien sabe a que puede deberse? despues de buscar todas (creo y espero) las diferencias entre el asm de mac y cualquier otro sistema me gustaria al menos rematar la faena y saber por que esto no funciona. si podeis pasarme algun link que hable sobre ello ya estaria mas que satisfecho, ya que directamente no se ni como buscarlo.

un saludo y muchas gracias!