Afficher 'hello world' dans une fenêtre graphique (gtk)
Introduction
Oui, on peut manipuler gtk en assembleur, même si c'est un peu trapu !
Créer le programme hellogtk.asm
section .data
hello_str db 'Hello, world!', 0
section .text
global main
extern gtk_init, gtk_main, gtk_main_quit, gtk_widget_show_all, gtk_window_new, gtk_window_set_title, gtk_label_new, gtk_container_add
main:
; Initialiser GTK
push rbp
mov rbp, rsp
sub rsp, 16
mov qword [rbp-16], 0 ; argc
mov qword [rbp-8], 0 ; argv
lea rdi, [rbp-16] ; argc
lea rsi, [rbp-8] ; argv
call gtk_init
; Créer la fenêtre
mov edi, 0 ; GTK_WINDOW_TOPLEVEL
call gtk_window_new
mov rbx, rax ; Sauvegarder le pointeur de fenêtre
; Définir le titre de la fenêtre
mov rdi, rbx
mov rsi, hello_str
call gtk_window_set_title
; Créer le label
mov rdi, hello_str
call gtk_label_new
mov rsi, rax
; Ajouter le label à la fenêtre
mov rdi, rbx
call gtk_container_add
; Afficher la fenêtre
mov rdi, rbx
call gtk_widget_show_all
; Exécuter la boucle principale de GTK
call gtk_main
; Nettoyer la pile
leave
ret
section .note.GNU-stack noalloc noexec nowrite progbits
Assembler
nasm -f elf64 hellogtk.asm -o hellogtk.o
Linker
gcc -o hellogtk hellogtk.o `pkg-config --cflags --libs gtk+-3.0`
Lancer le programme
./hellogtk
↑ Haut de page