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
Esto no es carbono como se solicitó en los comentarios en las respuestas anteriores, pero puede ayudarlo a avanzar un paso más en su noble búsqueda:
http://cocoawithlove.com/2010/09/minimalist-cocoa-programming.html