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


返回上一頁