From f921af270c01ee026e9dcaeb294ec7583b0b8454 Mon Sep 17 00:00:00 2001
From: PEDRO MARTINS E SA <pmes18@urquell>
Date: Mon, 18 Nov 2019 13:02:49 -0300
Subject: [PATCH] inicial

---
 bin/meu_malloc.o      | Bin 4632 -> 5208 bytes
 includes/meu_malloc.h |   6 +--
 lib/libmeu_malloc.a   | Bin 4880 -> 5456 bytes
 pseudoc.c             |  22 +++------
 src/meu_malloc.s      | 106 +++++++++++++++++++++++++++++++-----------
 src/teste.c           |  39 ++++++++++++++--
 teste                 | Bin 0 -> 12840 bytes
 7 files changed, 123 insertions(+), 50 deletions(-)
 create mode 100755 teste

diff --git a/bin/meu_malloc.o b/bin/meu_malloc.o
index ac9277b16f9a3439a70edb80832106d1c093bc78..4624a10edc2614cd913e8515fb2c9c669ba68f99 100644
GIT binary patch
literal 5208
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
R0`I4Pp5i}EdfX`H#BVA`wS@ox

delta 1533
zcmZ{ke~3&`6vyv<Gk7zzv-8$0&uVSPnl;vsH-ijqGg|!d)_YjLveVLfI}N)r%nn0}
zRz1HqDV)->rHJA`KSDNT3!w-}`NtprAX>@KM2dUg9BaDeO!wY%KHqcBz4Pwty@>Qq
zJQ9({lpn3Xc8tclTXegD78aUw)AFvGCi{+JPEO0Zy+BrUSF5bwa}j1{Pg)+V(HpA6
zJStQ+u6)a#Qk4vrJ5}bP6|za64L0dLFLZlA(d|3(+S{x2p4X+bZogObL#!QW(lojk
z)=CjKKL^~B>e!g%8#=+e&G1FCMtI4VPA_=?X;+d~!x>lYx_P16P{N#V8(OPj+M2<C
zX38v>QCrhe1tS_u8HrfJG+15|N5W+3g_IGRz)CjQrW4FEH1wjeAtz<P68CaA<sK`k
z5?IP;c;c?|wx`otE}PjJn*$%*v#*4PO`;V`_>(BHM(7%@RxNVKr{A<h;chdW9<Fw`
zIFyo;g4%|BK;Sv#_XWNWdA+dB3FOrRzgXnm<d@LsHWrK(3SJ}MD)8sXHwyd}@?nzW
z3{78=A9nJ)hdB9&!a1Rl<iwOb6?i4`>jGDhKNffm^6#abzr`8~FG~f+ry&1Ep<mul
z8=%p{Zj(WUP}2VI;EvY{T^=>lf$AAS?Lr=RTK*GvBToqY0P+O_KgKzG2P=Vk6R^<R
z2i3mb=~g~p$Xab387oINb+%{n*5XW-<no=Hx3y)hoK<w!<F@eF7p59~^Yzh7K+Dvs
zn<(&$im>tPchMe#Ri?(+e|5~qW}YDzL*hZsSv?zntCqqtze?A@B{o|S@~g2O|LJgC
z;8U@4AFrw!5Y*|Y-gVSBf*M72kgH*tABx%EGwa2W_>uEPgO}wRoe2JbO2ZHi%p9en
zIv%sVY^{TAKpj`dydYBkgt$2>TQxWx2-4asR|76eRk)$Vz0F)>)*``AWwvKE_FWEh
zE8^0H;y2`AMZ|Lfg-39M3Fph;b460x?t&R3lhQyL<k@o81($i`g3oN}@WYH?((}>z
q5);w@JA?62QFn2-J-C*$FamdjQ#=>(u1>&@VBFj5$2<c4O3fdmM(}_D

diff --git a/includes/meu_malloc.h b/includes/meu_malloc.h
index 71a9f90..53a4615 100644
--- a/includes/meu_malloc.h
+++ b/includes/meu_malloc.h
@@ -9,10 +9,10 @@ void aloca_espaco(int tam_alloc);
 
 void* alocaMem(int tam_alloc);
 
-//void arruma_heap();
+void arruma_heap();
 
-//void liberaMem(void* bloco);
+void liberaMem(void* bloco);
 
 void print_mapa();
 
-#endif
+#endif
\ No newline at end of file
diff --git a/lib/libmeu_malloc.a b/lib/libmeu_malloc.a
index 3416b0109e8268ca82e7e377514ba356f9416e97..c0a3011798857345f00bccd609e9428b9a54909f 100644
GIT binary patch
literal 5456
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

delta 1554
zcmZ{kU1$?Q5XX0OjlHBvdQBr|O0BfDwWjJNDveSTsfwK5p{*a-P{ohnH)^#;Uo5Gd
zACw}f1ESU^QBXlJ3i_f@sG@?RB7!eI_+b5rLMw_s2)cV2>vh2iw>$Hj|Ln|hVV_4%
z)}Q=bG`nfm%u~Zr*MtDn(A)5n#<K0Y)l4&s%(-d#P}LIazG6;I%eu8tR&=RD)*niQ
znc16`^Hq9tWgU+)p_Wx2xZ}){e88?U`&P;(eVJdP_rBJx0Y$g&%j*VL>%H%st8RT(
z^gebROp&J3Bd}U(fD=+%$!Oz`yCE-aEcTK;+r8v5bQC3NC7ds+-7vqpwmM-huneuk
zFfGmCKQm=!%&4Vlsf-bgrHn)@VH!-A#3x}gc_w94*RYbUmT3pG4Gq0$Y}82^u-Lr<
z&bTY63ORSwyD6R4I(KdEip_x`chjx#xG8k%GXCxkYq9;2-%61KGIuE)E>^>>m>ruV
zq#bg_YIePiDH#yboyZ>v{3!AW9h*3Zyi(vdkpCJhCxZo^B^5%!J1poD_$%Z)1^yPf
z+hseW%QxgF1pP4b%QnxB>WRw+l)MlMLdfq3TtWU!;8n<f2wX${#>xGxe<LQoQ@H6l
z7H(#tLY$()j7y=-t7bbed*R>Uwzm!WMS<@{9v2SmMxGG(apVgHe%j^)-g}qBypnzh
z`Ocm?U+wSQw|)2iE!Yzt`s%0#Uwr*E2Q7Xzd>0e^(=@Q>*YAQofik~J3DAHV_FyBf
zi8wUNAr??$YcX5GGF+jshucO+mB!+~Cm-ZzX3q#!)9e~T`u|fkAn0eH{=t9rLxMhv
z`h0;0?NOa$$&f2m{eJ!i%=o6kt5PjI*^Uc~4}CA&>tLcXi`@WiN_n{6q4}%lntJF~
zR5#CRFj87hYj0gwB+9RivbeXEE10#r;A>fvXAO2<0kL45US&6n3O&IF&sF44As39h
zuK3_nFzGrVL8LtC8t}mmwq26o8jmFS#I|jIh=h`!Vf$7lq#5>x;^U)u@ATjvV2vB#
bUZ~M?L$;?N=U^lh_nhVbc4j?nib;O}6PE-t

diff --git a/pseudoc.c b/pseudoc.c
index 25d5a2c..e7fee05 100644
--- a/pseudoc.c
+++ b/pseudoc.c
@@ -70,12 +70,10 @@ void* alocaMem(int tam_alloc)
 			}
 			else
 			{
-				if (endr == teto_heap)
-				{				
-					aloca_espaco(tam_alloc);
-					(endr) = 0;
-					8(endr) = tam_alloc;	
-				}			
+				endr = teto_heap;
+				aloca_espaco(tam_alloc);
+				(endr) = 0;
+				8(endr) = tam_alloc;			
 			}			
 			break;		
 		}		
@@ -86,23 +84,15 @@ void* alocaMem(int tam_alloc)
 	return (endr + 16);
 }
 
-
-
-		cmpq $LIVRE, %rbx
-		jne fim_if_aloca_mem
-	
-
-
 void arruma_heap()
 {
-	if (piso_heap == 1)
-		return;
+	void *endr_ant, endr; 
 
 	endr_ant = piso_heap;
 	endr = piso_heap + 8(endr_ant) + 16;
 	while (endr < teto_heap)
 	{
-		if ((endr == 1) && (endr_ant == 1))
+		if ((endr == 1) && ((endr_ant) == 1))
 			8(endr_ant) += 8(endr) + 16;
 		else
 			endr_ant = endr;
diff --git a/src/meu_malloc.s b/src/meu_malloc.s
index e59e0c8..629b691 100644
--- a/src/meu_malloc.s
+++ b/src/meu_malloc.s
@@ -8,8 +8,9 @@
 	str5: .string "INICIANDO O ALOCADOR\n"
 	pula_Linha: .string "\n"
 
-	flag: .string "%d\n"		#############APAGARRRRRRRR########## 
-	oi: .string "oi\n"		#############APAGARRRRRRRR########## 
+	flag: .string "%d"
+	flaag: .string "%d, %d \n"		#############APAGARRRRRRRR########## 
+	oi: .string "oi\n"			#############APAGARRRRRRRR########## 
 
 .section .bss
 	.equ ALOCADOR, 1040
@@ -75,7 +76,13 @@ finalizaAlocador:
 aloca_espaco:
 	pushq %rbp
 	movq %rsp, %rbp
-		#traducao nao feita
+	
+		movq %rdi, %rax
+		addq $16, %rax
+		addq %rax, teto_heap
+		movq teto_heap, %rdi
+		movq $12, %rax
+		syscall
 
 	popq %rbp
 	ret
@@ -86,11 +93,6 @@ alocaMem:
 	subq $8, %rsp		#aloca espaco para endr	
 	
 	movq %rdi, %r12		#r12 = ponteiro alocado
-	
-	#movq $flag, %rdi
-	#movq %r12, %rsi
-	#call printf	
-	
 	movq piso_heap, %rbx
 	cmpq $0, %rbx
 	jne fim_if_aloca_mem	
@@ -108,22 +110,22 @@ alocaMem:
 			jl else_if_aloca_mem2
 				addq $16, %r12		#8(endr) -= tam_alloc + 16
 				subq %r12, 8(%rbx)				
-				
-				addq $16, 8(%rbx)	#endr += 8(endr) + 16
-				addq 8(%rbx), %rbx
-			
+				movq 8(%rbx), %r13
+				subq $16, %r12				
+				addq $16, %r13	#endr += 8(endr) + 16
+				addq %r13, %rbx	
 				movq $OCUPADO, (%rbx)
-				movq %r12, 8(%rbx)
-				
+				movq %r12, 8(%rbx)				
 			jmp fim_if_aloca_mem2
 			else_if_aloca_mem2:					
-				cmpq teto_heap, %rbx
-				jne fim_if_aloca_mem2
-					pushq %r12					
-					call aloca_espaco
-					movq $OCUPADO,(%rbx)
-					movq %r12, 8(%rbx)										
-				jmp fim_if_aloca_mem2
+				movq teto_heap,%rbx
+				movq %r12, %r15
+				pushq %r12
+				call aloca_espaco
+				popq %r12
+				movq $OCUPADO,(%rbx)
+				movq %r15, 8(%rbx)										
+			jmp fim_if_aloca_mem2
 			fim_if_aloca_mem2:
 			jmp fim_while_aloca_mem	
 		
@@ -144,14 +146,59 @@ alocaMem:
 arruma_heap:
 	pushq %rbp
 	movq %rsp, %rbp
-		#traducao nao feita	
+	subq $16, %rsp	
+
+	movq piso_heap, %r10
+	movq %r10, -8(%rbp)	#endr_ant = piso_heap
+	movq -8(%rbp), %rax
+	
+	movq piso_heap, %rbx
+	addq $16, %rbx
+	addq 8(%rax), %rbx
+	movq %rbx, -16(%rbp)		#endr = piso_heap + tam_piso + 16
+
+	while_arruma_heap:
+	cmpq teto_heap, %rbx
+	jge fim_while_arruma_heap
+		cmpq $1, (%rbx)
+		jne else_if_arruma_heap
+		cmpq $1, (%rax)
+		jne else_if_arruma_heap
+			movq 8(%rbx), %r10
+
+			addq %r10, 8(%rax)
+			addq $16, 8(%rax)
+
+		jmp fim_if_arruma_heap
+		else_if_arruma_heap:
+			movq %rbx, %rax
+		jmp fim_if_arruma_heap
+	fim_if_arruma_heap:
+	
+	movq 8(%rbx), %r13
+	addq $16, %r13
+	addq %r13, %rbx
+
+	jmp while_arruma_heap
+	fim_while_arruma_heap: 
+
+	#movq $flaag, %rdi
+	#movq (%rax), %rsi
+	#movq (%rbx), %rdx
+	#call printf
+
+	addq $16, %rsp
 	popq %rbp
 	ret
 #---------------------------------------------------------------------#
 liberaMem:
 	pushq %rbp
 	movq %rsp, %rbp
-		#traducao nao feita
+
+	movq %rdi, %rbx
+	movq $LIVRE, -16(%rbx)
+	call arruma_heap	
+
 	popq %rbp
 	ret
 #---------------------------------------------------------------------#
@@ -184,9 +231,10 @@ print_mapa:
 			addq $1, %r12
 			jmp for_cabecalho
 		fim_for_cabecalho:
-			#movq flag,%rdi		
-			#movq 8(%rbx),%rsi
-			#call printf		
+			
+			movq $flag,%rdi		
+			movq 8(%rbx),%rsi
+			call printf		
 		
 		cmpq $LIVRE, (%rbx)
 		jne else_if_while
@@ -216,8 +264,10 @@ print_mapa:
 			jmp fim_if_while
 		
 		fim_if_while:
-		addq $16, 8(%rbx)
-		addq 8(%rbx), %rbx
+		movq 8(%rbx), %r13
+		addq $16, %r13
+		addq %r13, %rbx
+
 		jmp while_loop
 	
 	fim_while_loop:
diff --git a/src/teste.c b/src/teste.c
index 8d5cbb7..7ca01d9 100644
--- a/src/teste.c
+++ b/src/teste.c
@@ -1,13 +1,46 @@
 #include <meu_malloc.h>
+#include <stdio.h>
 
 int main()
 {
-	void* x;
+	void *w, *x, *y, *z;
 	
 	iniciaAlocador();
-	x = alocaMem(1024);
 	print_mapa();
-	finalizaAlocador();
+	printf("\n");
+	w = alocaMem(100);
+	print_mapa();
+	printf("\n");
+	x = alocaMem(200);
+	print_mapa();
+	printf("\n");
+	y = alocaMem(300);
+	print_mapa();
+	printf("\n");	
+	z = alocaMem(400);
+	print_mapa();
+	printf("\n");
 	
+	liberaMem(x);
+	print_mapa();
+	
+	x = alocaMem(50);
+	print_mapa();
+	printf("\n");
+	
+	printf("\n");
+	liberaMem(y);
+	print_mapa();
+	printf("\n");
+	liberaMem(w);
+	print_mapa();
+	printf("\n");
+	liberaMem(x);
+	print_mapa();
+	printf("\n");
+	liberaMem(z);
+	print_mapa();
+	printf("\n");
+
 	return (0);
 }
diff --git a/teste b/teste
new file mode 100755
index 0000000000000000000000000000000000000000..a62e04207aa5ce53ce47c638b817124e16b7bbc3
GIT binary patch
literal 12840
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

literal 0
HcmV?d00001

-- 
GitLab