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