32-Bit-Assembly auf 64-Bit-Prozessor mit Mac OS X ausführen

Ich habe ein Problem mit der Ausführung von 32-Bit-Assembly auf meinem 64-Bit-Mac unter OS X 10.9.5. Ich habe auch NASM 2.11.08 installiert. Ich lese gerade die Assemblersprache Step by Step von Jeff Duntemann. In dem Buch gibt er Anweisungen für die 32-Bit-Assembly unter einem Linux-Betriebssystem. Wie kann ich dieses Programm auf meinem 64-Bit-Mac OS X-Computer ausführen?

; eatsyscall.asm

SECTION .data           ; Section containing initialised data
EatMsg: db "Eat at Joes!",10
EatLen: equ $-EatMsg    

SECTION .bss            ; Section containing uninitialized data 

SECTION .text           ; Section containing code

global  _start          ; Linker needs this to find the entry point!

_start:
    nop         ; This no-op keeps gdb happy...
    mov eax,4       ; Specify sys_write call
    mov ebx,1       ; Specify File Descriptor 1: Standard Output
    mov ecx,EatMsg      ; Pass offset of the message
    mov edx,EatLen      ; Pass the length of the message
    int 80H         ; Make kernel call

    MOV eax,1       ; Code for Exit Syscall
    mov ebx,0       ; Return a code of zero 
    int 80H         ; Make kernel call

Ich habe versucht, es mit @ zusammenzusetz

nasm -f elf -g -F stabs eatsyscall.asm

Ich versuche dann, es mit @ zu verknüpf

ld -o eatsyscall eatsyscall.o

aber ich bekomme diesen Fehler

ld: warning: -arch not specified
ld: warning: -macosx_version_min not specified, assuming 10.6
ld: warning: ignoring file eatsyscall.o, file was built for unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 ) which is not the architecture being linked (x86_64): eatsyscall.o
Undefined symbols for architecture x86_64:
  "start", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for inferred architecture x86_64

Dies sollte doch laufen, oder? Ich dachte, dass die 64-Bit-Prozessoren von Intel 32-Bit-Programme ausführen können. Oder gibt es keine Möglichkeit, ein Assembly-Programm für 32-Bit-Linux-Systeme auf einem 64-Bit-Mac auszuführen?

Muss ich einige 32-Bit-Bibliotheken installieren, um diese Datei verknüpfen zu können? Sollte ich etwas anderes als NASM wie GCC verwenden? Oder ist das Programm selbst nicht richtig geschrieben. Danke für die Hilfe

Antworten auf die Frage(4)

Ihre Antwort auf die Frage