COREWAR

Le corewar

  • Présentation du projet
  • Qu'est ce que l'assembleur
  • Qu'est ce que la machine virtuelle

LE PROJET

Simulation de "combat" de champions sur une machine virtuelle

LE PROJET

ASSEMBLEUR

.name "Death"
.comment "Fork"
.extend

	#test
	st	r1, :l1+1 #commentaire maggle
	st	r1, :l2+1
	st	r1, :l3+1
	st	r1, :l4+1
	st	r1, :golive+1
	st	r1, :live+1
	xor	r2,r2,r2
	fork	%:f1
	ld	%-15, r3
	ld	%1, r4
loop:	add r3 , r4 , r3
	zjmp	%:golive
	xor	r5, r5, r5
	zjmp	%:loop
golive: live	%1
	ld	%-25, r3
	ld	%1, r4
lock:	add	r3, r4, r3
	zjmp	%:nolock
	xor	r5, r5, r5
	zjmp	%:lock
nolock:	
	xor	r1, r1, r1
	add	r1, r1, r1
	.code	00 00 00
live:	live	%1


f1:	fork	%:f2
f2:	fork	%:f3
f3:	fork	%:f4
f4:	fork	%:f5
f5:	fork	%:f6
f6:	fork	%:f7
f7:	fork	%:f8
f8:	fork	%:f9
f9:	fork	%:f10
f10:

l1:	live	%1
l2:	live	%1
l3:	live	%1
l4:	live	%1
	zjmp	%:l1

ASSEMBLEUR

0000000 ea00 f383 6142 6f74 206e 6564 7320 7275
0000010 6d69 2069 7328 6c65 6e6f 4720 6e6f 6f7a
0000020 0029 0000 0000 0000 0000 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0000
*
0000080 0000 0000 0000 0000 0000 b601 6f47 7a6e
0000090 206f 656c 6d20 7461 6e69 202c 276c 7365
00000a0 2074 6170 2073 6966 006e 0000 0000 0000
00000b0 0000 0000 0000 0000 0000 0000 0000 0000
*
0000890 680b 0001 0064 0b01 0168 2f01 0100 680b
00008a0 0101 0068 0301 0170 1000 9002 0000 0000
00008b0 090f 9a00 0001 0200 029a ff90 ffff 059c
00008c0 000c 0219 00d0 0429 9002 0000 0000 020e
00008d0 0090 0000 0200 0009 0216 00d0 0417 9002
00008e0 0000 0400 020e 0090 0000 0200 540b 0504
00008f0 090e 97ff 0001 0200 029a ff90 ffff 059c
0000900 000c 0219 00d0 0429 9002 0000 0000 020e
0000910 0090 0000 0200 0009 0216 00d0 0417 9002
0000920 0000 0400 020e 0090 0000 0200 540b 0504
0000930 090e 97ff 680b 0001 000f 0601 0164 0000
0000940 0000 0101 0000 9a02 ff09 0cfb 69ff 7003
0000950 0001 0327 0170 2a00 7003 0001 032d 0170
0000960 3000 7003 0001 0333 0170 3600 7003 0001
0000970 0c39 43ff 0001 0200 0c9a 8d00 0001 0200
0000980 0c9a 73ff 0001 0200 0c9a 3d00 0001 0200
0000990 0c9a 23ff 0001 0200 0c9a d8ff 0001 0200
00009a0 0c9a 93ff 0001 0200 0c9a 0600 ff09 0bc5
00009b0 0168 cdff 0100 6406 0001 0000 0100 0001
00009c0 0200 099a fbff 0001 0200 029a 0090 0000
00009d0 0564 000c 0219 00d0 0429 9002 0000 0000
00009e0 020e 0090 0000 0200 0009 0216 00d0 0417
00009f0 9002 0000 0400 020e 0090 0000 0200 540b
0000a00 0504 090e 5f00 0001 0200 029a 0090 0000
0000a10 0564 000c 0219 00d0 0429 9002 0000 0000
0000a20 020e 0090 0000 0200 0009 0216 00d0 0417
0000a30 9002 0000 0400 020e 0090 0000 0200 540b
0000a40 0504 090e 5f00                         
0000a46

MACHINE VIRTUELLE

Allouer la RAM de la VM

Inscrire les champions à l'intérieur de la VM

Parcourir cette mémoire octet par octet et exécuter les fonctions.

Créer toutes les fonctions comme live, add, st, etc

Notre corewar

Un assembleur qui assemble jusqu'au header

Une VM qui alloue la mémoire, et qui inscrit tous ses champions à l'intérieur

Merci de votre attention

deck

By Marc Rollin

deck

  • 642