This project implements some data structures in x86-64 (Intel) assembly. The instructions here conform to the C ABI, so they can be used from within C programs (Tested on Linux and Mac OS).
This insanity was written for the "Computer Organization" course, taught during the first semester of 2019 at the Faculty of Natural and Exact Sciences, University of Buenos Aires.
Funciones de string
:
-
char* strClone(char* a)
(19 Inst.) -
uint32_t strLen(char* a)
(7 Inst.) -
int32_t strCmp(char* a, char* b)
(25 Inst.) -
char* strConcat(char* a, char* b)
(42 Inst.) -
void strDelete(char* a)
(1 Inst.) -
void strPrint(char* a, FILE *pFile)
(7 Inst.)
Funciones de list_t
:
-
list_t* listNew()
(7 Inst.) -
void listAddFirst(list_t* l, void* data)
(21 Inst.) -
void listAddLast(list_t* l, void* data)
(21 Inst.) -
void listAdd(list_t* l, void* data, funcCmp_t* fc)
(54 Inst.) -
void listRemoveFirst(list_t* l, funcDelete_t* fd)
(16 Inst.) -
void listRemoveLast(list_t* l, funcDelete_t* fd)
(16 Inst.) -
void listRemove(list_t* l, void* data, funcCmp_t* fc, funcDelete_t* fd)
(49 Inst.) -
void listPrint(list_t* l, FILE *pFile, funcPrint_t* fp)
Funciones de n3tree_t
:
-
n3tree_t* n3treeNew()
(6 Inst.) -
void n3treeAdd(n3tree_t* t, void* data, funcCmp_t* fc)
(47 Inst.) -
void n3treeRemoveEq(n3tree_t* t, funcDelete_t* fd)
(29 Inst.) -
void n3treeDelete(n3tree_t* t, funcDelete_t* fd)
(33 Inst.)
Funciones de nTable_t
:
-
nTable_t* nTableNew(uint32_t size)
(31 Inst.) -
void nTableAdd(nTable_t* t, uint32_t slot, void* data, funcCmp_t* fc)
(9 Inst.) -
void nTableRemoveSlot(nTable_t* t, uint32_t slot, void* data, funcCmp_t* fc, funcDelete_t* fd)
(11 Inst.) -
void nTableDeleteSlot(nTable_t* t, uint32_t slot, funcDelete_t* fd)
(21 Inst.) -
void nTableDelete(nTable_t* t, funcDelete_t* fd)
Funciones a implementar en C
:
-
char* strRange(char* a, uint32_t i, uint32_t f)
(15 LOCs) -
void listPrintReverse(list_t* l, FILE *pFile, funcPrint_t* fp)
(15 LOCs) -
void n3treePrint(n3tree_t* t, FILE *pFile, funcPrint_t* fp)
(11 LOCs) -
void nTableRemoveAll(nTable_t* t, void* data, funcCmp_t* fc, funcDelete_t* fd)
(2 LOCs) -
void nTablePrint(nTable_t* t, FILE *pFile, funcPrint_t* fp)
(5 locs)
Una vez que le paso un puntero a un dato a una funcion, pierdo el ownership. Son las funciones que deben encargarse de destruir sus parametros de ser necesario.
- Implementacion de
strLen
runMain.sh
fue modificado para automatizar otras partes de testeo.
salida.caso.propios.txt
fue renombrado asalida.main.propios.txt
que me resulta mas obvio.runMain.sh
corre otras partes del build y testeo, como hacer un diff entre los resultados del test y los resultados esperados.- Se creo el archivo
salida.main.esperado.txt
para guardar los resultados esperados.
- Implementacion de
strClone
- Implementacion de
strDelete
- Implementacion de
strPrint
- Implementacion de
strConcat
- Implementacion de
listNew
- Implementacion de
listAddFirst
- Implementacion de
listRemoveLast
- Implementacion de
strCmp
- Implementacion de
listRemoveFirst
- Implementacion de
listRemove
- Implementacion de
listAdd
- Implementacion de
n3treeNew
- Implementacion de
n3treeRemoveEq
- Implementacion de
n3treeDelete
- Implementacion de
listPrint
- Implementacion de
nTableNew
- Implementacion de
nTableAdd
- Implementacion de
nTableRemoveSlot
- Implementacion de
nTableRemoveAll
- Implementacion de
nTableDelete
- Implementacion de
strRange
- Implementacion de
listPrintReverse