A simple project in C and Assembly (AT&T and Intel) for operating with Matrices.
This is a final project in an Assembly Language course in University of Sao Paulo (UNESP - Brazil)
Bruno Vedoveto - @bleandro
Dalton Lima - @daltonbr
Lucas Pinheiro - @lucaspin
Wesley Utsonomya - @ottozinho
- Implement applications in Assembly and high level languages interfaces (C).
- Compare execution time in C and Assembly, looking for code optimization in Assembly.
Consider three matrices of integers A, B, C and L x L size, defined in C language (these matrices could be randomly generated). Implement three equivalent functions (all functions must run in C language application):
The matrices must be static instantiates in C, at compiling-time.
These matrix must be ramdonly POPULATED, not randonly sized.
In relation to L, its good that the size could vary in fixed intervals (5x5, 10x10, 50x50, 100x100, etc).
- in C language
- Assembly (AT&T/GAS)
- Assembly (Intel/NASM)
- Group 1: (A x 2B); returning the greater value in the main diagonal.
Make experiments measuring the execution time between codes. Consider the average of the several executions and report the results.
- C language code
- Assembly code
- Documented reports from codes, describing the experiment's results of timed trial execution tests between two codes.
- Brief code explanation to the professor.
- The report organization and fullness will be assessed, as well the code organization and operation.
- Realização de atividade prática englobando os vários conceitos abordados durante o curso.
- Criar aplicações com interfaces entre linguagens de montagem e linguagens de alto nível (Assembly e Linguagem C)
- Comparar tempo de execução do código em C e Assembly, visando otimização do código Assembly.
Considere três matrizes de inteiros A,B,C de tamanho L x L definidas em Linguagem C (as matrizes podem ser geradas de forma aleatória). Implemente três funções equivalentes (que devem ser executadas por um programa em Linguagem C): As matrizes podem ser instanciadas em C e podem ser definidas de forma estática (em tempo de compilação). O preenchimento aleatório refere-se ao conteúdo e não tamanho. Em relação ao tamanho L, é interessante que seja variado, mas pode ser variado em intervalos fixos (5x5, 10x10, 50x50, 100x100, etc).
- em Linguagem C
- em Assembly sintaxe AT&T/GAS
- em Assembly sintaxe Intel/NASM
- Grupo 1: (A x 2B); retornando o maior valor da diagonal principal.
Faça experimentos para mensurar o tempo de execução de ambos os códigos. Considere a média de várias execuções e reporte os resultados.
- Código Linguagem C
- Código Assembly
- Relatório documentando os códigos entregues e descrevendo os resultados dos experimentos de comparação de tempo de execução entre os dois códigos.
- Será realizada uma apresentação breve do código em execução para o professor.
- É importante que todos os integrantes do grupo estejam cientes de todas as etapas do trabalho.
- A organização e completude do relatório será avaliada, assim como a organização e funcionamento do código.