Jump to content

l04d

Membros
  • Content Count

    2
  • Joined

  • Last visited

Community Reputation

3 Neutral

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Pensar assim se não é, é muito perto de ser uma falsa dicotomia, não é só porque da para subtrair somando, que subtração não existe, alias eu posso usar a mesma técnica para dizer que "na matemática só existe subtração, na verdade quando estamos somando estamos subtraindo, 3+2 = 5, é -(-3)-(-2) = 5" e assim por diante. Aqui você está equivocado, processadores como 8051 e PICs que são bastante usados na area de embed e não tem suporte para signed ints, ou seja, não tem suporte a números negativos, como você faz a sua mágica da subtração nesses processadores? em primeiro lugar temos que lembrar que naturalmente a mátematica não existe, regras mátematicas só funcionam se forem implementadas, historicamente os processadores só tinham disponível para aritimética full adders(http://www.physics.udel.edu/~watson/scen103/colloq2000/images/adder2.gif) e full subs(http://www.electronics-tutorials.ws/combination/comb56.gif), para fazer a multiplicação era usado por exemplo: int mul(int x, int y) { unsigned int ret = 0; while (y != 0) { if (y & 1) { ret += x; } x <<= 1; y >>= 1; } return ret; } (não que você fosse implementar uma função para multiplicar, mas o processador fazia isso quando usado equivalente ao atual mul) como você pode ver, isso está simplismente decompondo para uma adição, e então empurrando os bits para o lugar e repitindo, complexidade computacional O(n^2) em vez de O(n) como adição, int add(int x, int y) { if (y == 0) return x; else return add( x ^ y, (x & y) << 1); } lembrando que você pode implementar qualquer uma das operações aritiméticas básicas somente com as instruções de operação de bit, mas isso atualmente é perda de tempo, a maioria dos processadores tem ALUs (arithmetic logic units) muito eficientes, uma multiplicação caso a informação não sofra um desalinhamento no fetch, pode definitivamente fazer uma multiplicação tão rápido quanto uma adição, existem vários algoritmos para cada tamanho de número, que pode reduzir a complexidade das divisões e multiplicações por mais da metade, e.g: Fürer's algorithm (O(n log n 2^O(log*n)), Toom-3 (O(n^1.465)), Karatsuba algorithm (O(n^1.585)), Newton–Raphson division(O(M(n)) https://en.wikipedia.org/wiki/Division_algorithm#Newton.E2.80.93Raphson_division https://en.wikipedia.org/wiki/Fürer's_algorithm https://en.wikipedia.org/wiki/Karatsuba_algorithm https://en.wikipedia.org/wiki/Toom–Cook_multiplication -- wgr
  2. pode até rodar, porem acho que ele nao vai conseguir analizar arquivos ELF, provavelmente para COFF não vai ter problemas, uma dica é esse debugger bem pouco conhecido, foi muito inspirado no ollydbg, https://github.com/eteran/edb-debugger
×
×
  • Create New...