Gtk >> Assembly (ARM)
hello, world!
main.s
.text .align title: .asciz "Hello, world!" .align destroy:.asciz "destroy" .align str_ptr: .word title .word destroy .word gtk_main_quit .align .global main main: stmfd sp!, {r4, lr} sub sp, sp, #24 str r0, [sp, #12] str r1, [sp, #8] add r3, sp, #12 add r2, sp, #8 mov r0, r3 mov r1, r2 bl gtk_init mov r0, #0 bl gtk_window_new mov r3, r0 str r3, [sp, #16] ldr r0, str_ptr bl gtk_label_new mov r3, r0 str r3, [sp, #20] ldr r4, [sp, #16] bl gtk_container_get_type mov r3, r0 mov r0, r4 mov r1, r3 bl g_type_check_instance_cast mov r3, r0 mov r0, r3 ldr r1, [sp, #20] bl gtk_container_add ldr r0, [sp, #16] bl gtk_widget_show_all mov r3, #0 str r3, [sp, #0] mov r3, #0 str r3, [sp, #4] ldr r0, [sp, #16] ldr r1, str_ptr+4 ldr r2, str_ptr+8 mov r3, #0 bl g_signal_connect_data bl gtk_main mov r3, #0 mov r0, r3 add sp, sp, #24 ldmfd sp!, {r4, pc}
編譯、執行
$ as main.s -o main.o $ gcc main.o -o main `pkg-config --libs --cflags gtk+-2.0` $ ./main