cocoa macos assembly carbon

cocoa - Programación de la GUI de ensamblaje para Mac OS X



macos assembly (2)

Me gustaría saber cómo puedo hacer un sencillo programa de ensamblaje para Mac OS X que muestra una ventana en la pantalla y poner texto en color en esa ventana. El código puede llamar a algunas API de carbono o Cocoa. Necesito un código para el nasm sintaxe.

Vi en http://snipplr.com/view/29150/assembly-code-nasm-for-mac--hello-world el siguiente código que funciona bien, pero no es gráfico.

; Hello World in assembly for mac ; ; nasm -f macho hello.asm ; ld -e _start -o hello hello.o 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 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

Gracias por cualquier ayuda


Puede llamar a Carbon APIs con una call como esta:

call _CreateNewWindow

También puede pasar argumentos, pero no estoy seguro de cómo hacerlo. Probablemente push hacia la pila en orden inverso justo antes de la call :

push arg4 push arg3 push arg2 push arg1 call _CreateNewWindow

Puede ver cómo se compila el código C en el ensamblaje, así:

$ clang myCarbonCode.c -S -O -o myCarbonCode.s