[[[ hello.asm ]]]
section .text
global _start ;must be declared for linker (ld)
_syscall:
int 0x80 ;system call
ret
_start: ;tell linker entry point
push dword len ;message length
push dword msg ;message to write
push dword 1 ;file descriptor (stdout)
mov eax,0x4 ;system call number (sys_write)
call _syscall ;call kernel
;the alternate way to call kernel:
;push eax
;call 7:0
add esp,12 ;clean stack (3 arguments * 4)
push dword 0 ;exit code
mov eax,0x1 ;system call number (sys_exit)
call _syscall ;call kernel
;we do not return from sys_exit,
;there's no need to clean stack
section .data
msg db "Hello, world!",0xa ;our dear string
len equ $ - msg ;length of our dear string
> alc-on
> nasm -f macho hello.asm
> ld -e _start -o hello hello.o
> ./hello
Hello, world!
> which ar
/Library/alchemy-darwin-v0.5a/achacks/ar
> ar rc hello.a hello.o
llvm-nm: hello.o: unrecognizable file type
llvm-ld: warning: Ignoring file 'hello.o' because does not contain bitcode.
Let me know if there's a fix for it.
May 26th, 2011
Looks like you cannot do so.
Read: http://forums.adobe.com/thread/856497?tstart=0
No comments:
Post a Comment