Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

91
Visualizações
Comprender la instrucción rlwinm de PowerPC

Así que finalmente me convencí de probar y aprender/usar PowerPC (PPC). Todo va bien y la mayor parte de la información se encontró en línea. Sin embargo, al mirar algunos ejemplos me encontré con esto:

 rlwinm r3, r3, 0,1,1

¿Cómo haría esto en C? Intenté investigar un poco, pero no pude encontrar nada que me ayudara. ¡Gracias por adelantado!

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

rlwinm significa "Rotar palabra a la izquierda inmediatamente, luego y con máscara", y su uso correcto es

 rlwinm RA, RS, SH, MB, ME

Según la página de descripción :

  • RA Especifica el registro de propósito general de destino donde se almacena el resultado de la operación.
  • RS Especifica el registro fuente de propósito general para la operación.
  • SH Especifica el valor de cambio para la operación.
  • MB Especifica el valor inicial de la máscara para la operación.
  • ME Especifica el valor final de la máscara para la operación.
  • BM Especifica el valor de la máscara de 32 bits.

Y

  • Si el valor de MB es menor que el valor de ME + 1, entonces los bits de máscara entre el punto de inicio y el punto final inclusive se establecen en unos. Todos los demás bits se establecen en ceros.
  • Si el valor de MB es el mismo que el valor de ME + 1, los 32 bits de máscara se establecen en unos.
  • Si el valor de MB es mayor que el valor de ME + 1, entonces todos los bits de máscara entre el valor de ME +1 y el valor de MB -1 inclusive se establecen en ceros. Todos los demás bits se establecen en unos.

Entonces, en su ejemplo, la fuente y el destino son los mismos. La cantidad de cambio es 0 , por lo que no hay cambio. Y MB=ME=1 , por lo que se aplica el primer caso, de modo que la máscara se convierte en ceros con el número de bit 1 como 1 , mientras se numera desde MSB=0 : 0x40000000 .

En C podemos escribirlo tan simple como

 a &= 0x40000000;

suponiendo que a es una variable de 32 bits.

over 4 years ago · Santiago Trujillo Relatório

0

rlwinm gira el valor de un registro dejado por el número especificado, realiza un AND y almacena el resultado en un registro.

Ejemplo: rlwinm r3, r4, 5, 0, 31

r4 es el registro de origen que se rota por 5 y antes de que el resultado rotado se coloque en r3 , también se le aplica AND con una máscara de bits de solo 1 s, ya que el intervalo entre 0 y 31 es el valor completo de 32 bits.

Ejemplo tomado de aquí .

Para una implementación de C , es posible que desee ver cómo girar a la izquierda y cómo AND , que debería ser trivial para construir juntos ahora. Algo como lo siguiente debería funcionar:

 int rotateLeft(int input, int shift) { return (input << shift) | ((input >> (32 - shift)) & ~(-1 << shift)); } int rlwinm(int input, int shift, int mask) { return rotateLeft(input, shift) & mask; }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda