Aller au contenu | Aller au menu | Aller à la recherche

/var/log/iksaif

vendredi, octobre 17 2008

minilibc ia32

Une minilibc en asm. Fonctions implémentés:

index.S memcpy.S memmove.S memset.S read.S rindex.S strcasecmp.S strchr.S strcmp.S strcpy.S strcspn.S strlen.S strncasecmp.S strncmp.S strrchr.S strspn.S strstr.S strxspn.S write.S

asm

Corewar

corewar.png

Corewar permet de créer des bots dans un langage très limité, proche de l'assembleur. Le but du jeu est de rester "en vie" tout en stoppant l'exécution des autres bots. Corewar est donc une machine virtuelle. Le programme asm permet de transformer l'assembleur en bytecode, et le programme dasm permet de faire l'inverse.

corewar1.png

Exemple de programme corewar

# dasm Gagnant.cor
 
.name "Celebration Funebre v0.99pl42"
.comment "Jour J"
 
        ld      %0, r3  # load
        zjmp    80      # jump if zero
        zjmp    0       # jump if zero
        live    %42     # alive
        sti     r15, %0, r14    # store index
        zjmp    -200    # jump if zero
        live    %42     # alive
        sti     r15, %0, r14    # store index
        zjmp    -200    # jump if zero
        live    %42     # alive
        sti     r15, %0, r14    # store index
        zjmp    -200    # jump if zero
        live    %42     # alive
        sti     r15, %0, r14    # store index
        zjmp    -200    # jump if zero
        sti     r15, %0, r14    # store index
        zjmp    -200    # jump if zero
        sti     r15, %0, r14    # store index
        zjmp    -200    # jump if zero
        sti     r1, %65462, %1  # store index
        sti     r1, %65455, %15 # store index
        sti     r1, %65448, %29 # store index
        sti     r1, %65441, %43 # store index
        sti     r1, %65434, %57 # store index
        sti     r1, %65427, %71 # store index
        ld      %393216, r4     # load
        ld      %917504, r12    # load
        ld      %1, r11 # load
        ld      %6, r10 # load
        live    %42     # alive
        sti     r4, %65381, %1  # store index
        add     r4, r12, r4     # addition
        sub     r10, r11, r10   # soustraction
        zjmp    -50     # jump if zero
        fork    -25     # fork
        live    %3      # alive
        fork    40      # fork
        live    %4      # alive
        fork    69      # fork
        live    %42     # alive
        ldi     %8, %65343, r15 # load index
        ld      %-186, r14      # load
        ld      %0, r2  # load
        zjmp    -220    # jump if zero
        live    %42     # alive
        fork    61      # fork
        live    %42     # alive
        ldi     %4, %65306, r15 # load index
        ld      %-190, r14      # load
        ld      %0, r2  # load
        zjmp    -257    # jump if zero
        live    %42     # alive
        ldi     %12, %65277, r15        # load index
        ld      %-182, r14      # load
        ld      %0, r2  # load
        zjmp    -286    # jump if zero
        live    %42     # alive
        ldi     %0, %65248, r15 # load index
        ld      %-194, r14      # load
        ld      %0, r2  # load
        zjmp    -315    # jump if zero