SóProvas


ID
238276
Banca
CESPE / CEBRASPE
Órgão
ABIN
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca de programas aplicativos e das arquiteturas de
computadores, julgue os próximos itens.

Em uma pilha implementada na CPU, se a disposição dos bytes seguir a forma little endian, o endereço de memória do topo da pilha apontará para o endereço do byte mais significativo do último valor empilhado. Se a disposição dos bytes seguir a forma big endian, o topo da pilha será o endereço do byte menos significativo do último valor empilhado.

Alternativas
Comentários
  • A definição está invertida. Veja aqui

    http://techforb.blogspot.com/2007/10/little-endian-vs-big-endian.html

    Little Endian

    Address Value
    1000 12
    1001 ef
    1002 cd
    1003 ab

    Big Endian

    Address Value
    1000 ab
    1001 cd
    1002 ef
    1003 12
  • Endiannes - é a ordenação de bytes na memória para representar dados. Há várias maneiras para se armazenar os bits de um dado na memória, mas duas dessas maneiras são bem conhecidas: little endian e big endian.

    - Little endian: o byte menos significativo do dado é armazenado no endereço de memória mais baixo reservado para o dado.
    - Big endian: o byte mais significativo do dado é armazenado no endereço de memória mais baixo.

  • Vou usar o exemplo acima.
    Imagine o seguinte:

    hex 0xabcdef12.
    em uma pilha os dados são empilhados do endereço maior ao menor.

    Se o endereçamento for little endian, então ab que é o bit mais significativo estará alocado no endereço maior(na base da pilha) e consequentemente 12 no endereço menor (no topo).

    O big endian coloca o bit menos significativo no endereço maior(base) e o mais significativo no endereço meor(topo).

    A questão está invertida, como afirmou o colega.
  • A meu ver a questão está mal formulada por desconsiderar o tamanho das words da pilha.
    sp -> |0xbbaa| 0xffd3
              |0x0011| 0xffe9
              |0x1122| 0xffff

    Supondo, como na ilustração acima, que essa pilha tenha palavras de 16 bits, o stack pointer em uma arquitetura little endian (pentium) estará sim apontando para o byte mais significativo (0xaa) do último valor empilhado (0xbbaa).
    Por fim, a questão está errada porque esse conceito "endianess" só é válido para memórias externas ao processador.
  • Agora que você entendeu, resolva essa questão: http://uva.onlinejudge.org/external/5/594.html
  • o conceito de ENDIANESS significa, entre outras coisas, o estudo da ordenação dos bytes NA MEMÓRIA, trata da organização dos bytes na MEMÓRIA e não dentro da CPU, conforme diz a questão.
    Esse é UM dos erros da questão.
  • Eu nunca tinha visto esses conceitos, excelentes comentários dos colegas...

    Mas acertei a questão por saber que o CESPE tem esse costume de inverter conceitos...
  • Se eu ganhasse 1 real para cada vez que o CESPE inverte os conceitos eu estaria rico!
  •  O topo da pilha é o último endereço que guardou algo? Se for isso, então a questão era pra estar C.

  • Prezados,

    Em resumo , o little endian significa que o byte de menor ordem do número é armazenado na memória nos menores endereços, por outro lado o big endian significa que os bytes de maior ordem de um número são armazenados nos menores endereços, ou seja , o comando da questão inverteu os conceitos.




    Portanto a questão está errada.

  • Se o gabarito dessa questão realmente for esse, então significa que o MAIOR endereço de memória está na base da pilha. Errei porque achei que ali seria o offset 0.