RosettaCodeData/Task/Window-creation/X86-Assembly/window-creation-1.x86

58 lines
1.0 KiB
Plaintext

;GTK imports and defines etc.
%define GTK_WINDOW_TOPLEVEL 0
extern gtk_init
extern gtk_window_new
extern gtk_widget_show
extern gtk_signal_connect
extern gtk_main
extern g_print
extern gtk_main_quit
bits 32
section .text
global _main
;exit signal
sig_main_exit:
push exit_sig_msg
call g_print
add esp, 4
call gtk_main_quit
ret
_main:
mov ebp, esp
sub esp, 8
push argv
push argc
call gtk_init
add esp, 8 ;stack alignment.
push GTK_WINDOW_TOPLEVEL
call gtk_window_new
add esp, 4
mov [ebp-4], eax ;ebp-4 now holds our GTKWindow pointer.
push 0
push sig_main_exit
push gtk_delete_event
push dword [ebp-4]
call gtk_signal_connect
add esp, 16
push dword [ebp-4]
call gtk_widget_show
add esp, 4
call gtk_main
section .data
;sudo argv
argc dd 1
argv dd args
args dd title
dd 0
title db "GTK Window",0
gtk_delete_event db 'delete_event',0
exit_sig_msg db "-> Rage quitting..",10,0