Ответ 1
Это не Углерод, как просили в комментариях в предыдущих ответах, но это может помочь вам сделать шаг вперед в своем благородном преследовании:
http://cocoawithlove.com/2010/09/minimalist-cocoa-programming.html
Мне нравится знать, как я могу сделать простую программу сборки для Mac OS X, которая показывает окно на экране и помещает в это окно цветной текст. Код может вызывать некоторые API-интерфейсы Carbon или Cocoa. Мне нужен код для nasm sintaxe.
Я видел в http://snipplr.com/view/29150/assembly-code-nasm-for-mac--hello-world следующий код, который отлично работает, но он не является графическим.
; 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 no need to clean stack section .data msg db "Hello, world!",0xa ;our dear string len equ $ - msg ;length of our dear string
Спасибо за любую помощь
Это не Углерод, как просили в комментариях в предыдущих ответах, но это может помочь вам сделать шаг вперед в своем благородном преследовании:
http://cocoawithlove.com/2010/09/minimalist-cocoa-programming.html
Вы можете назвать API-интерфейс Carbon с помощью call
следующим образом:
call _CreateNewWindow
Вы также можете передавать аргументы, но я не уверен, как это сделать. Вероятно, push
ed в стек в обратном порядке непосредственно перед call
:
push arg4
push arg3
push arg2
push arg1
call _CreateNewWindow
Вы можете посмотреть, как компилируется код C в сборку, например:
$ clang myCarbonCode.c -S -O -o myCarbonCode.s