Casa > Q > Qual É A Diferença Entre Uma Instrução Ldm E Uma Instrução Vldm Na Arquitetura Do Conjunto De Instruções Arm?

Qual é a diferença entre uma instrução LDM e uma instrução VLDM na arquitetura do conjunto de instruções ARM?

VLDM é para registros vetoriais contendo muitos valores de ponto flutuante (não tenho certeza se eles também podem conter inteiros, presumo que o uso do SIMD também seja permitido).

ARM Information Center

i.e. form NEON e VFP.

Nunca tinha visto esta instrução, pois tudo isso não existia quando escrevi ARM assembly.

LDM é tão antigo quanto ARM, significa "carregar muitos". Sem olhar para ele, eu assumo que VLDM é mais ou menos o mesmo que LDM, exceto que não é usado para carregar nos registros inteiros de propósito geral.

Uma trivia para LDM, você pode carregar todos os 16 registros de "propósito geral" (ou qualquer subconjunto de), significando que você pode fazer uma chamada de procedimento com ele, pois o PC (contador de programas) é R15 (PC um alias permitido).

p>LDM (e STM) desapareceu no ARMv8 (exceto no conjunto de instruções legado AArch32/ARMv7). No AArch64/ARMv8 você tem carga e armazenamento para pares de registros... LDM/STM não era muito "RISC" com ele tomando um número variável de ciclos dependendo de quantos registros foram carregados/armazenados. Não tenho certeza se o VLDM (e VSTM que eu assumo que existe) foi descartado, eu acho que não.

De Schnapp

O que é um anime que você considera lixo? :: Qual é a diferença entre 8051, PIC, AVR e ARM?