-
Instalar NASM y gdb
sudo apt install build-essential nasm gdb wget
-
Instalar gdb-dashboard (mejora la interfaz de gdb)
[https://github.com/cyrus-and/gdb-dashboard]
wget -P ~ https://git.io/.gdbinit
Recomendación: Todos los programas deben escribirse en C y luego en ASM. Hacer una rutina en main que llame a la función en C y luego a la función en ASM. Imprimir los resultados para verificar que sean iguales.
Usar gdb para debuggear
Escriba un programa que tome un vector de 16 enteros de 32 bits y los sume.
- Tip 1: Utilice una etiqueta en la sección data para crear el vector.
- Tip 2: Pueden usar DB, DW, DD, DQ ¿Cuál es el apropiado para un vector de enteros de 32 bits?
Implementar las siguientes funciones en lenguaje C y en ASM:
a) Retorna la cantidad de caracteres distintos de cero del string pasado por parámetro.
uint32_t strLen(char* a);b) Compara dos strings en orden lexicográfico . Debe retornar:
0si son iguales1sia < b-1sib < a
int32_t strCmp(char* a, char* b);c) Escribe el string en el stream indicado a través de pFile. Si el string es vacío debe escribir NULL.
void strPrint(char* a, FILE* pFile);Devuelve la cantidad de veces que aparece el caracter c en el string s.
int countChars(char* s, char c);Dado un string, devuelve un string in-place con los caracteres en orden inverso.
void intercambiar(char*);Dada una matriz de vector pasado por parámetro.
void diagonal(short* matriz, short n, short* vector);Dada una matriz de
void gris(pixel* matriz, short n, uint8_t* resultado);Dada una matriz de fc enteros de 32 bits, encontrar el primer máximo buscando en el orden de la memoria: ROW major order. Ver row and column major order. Devuelve un puntero a este valor y sus coordenadas en f y c.
#define SIZE_C 10
int* primerMaximo(int (*matriz)[SIZE_C] , int* f, int* c);