Objetivos
        
    
    
    
        
Memória
    
    
        
            
                A arquitetura armv4 define que um espaço endereçado de 4GB esteja disponível para a execução de 
                programas. Abaixo, um exemplo de uso da memória:
            
            
                Tab. 1: Uso de memória
                
                    
                        | Memória | 
                        Uso | 
                    
                
                
                    
                        | 0x00000000 | 
                        Código | 
                    
                    
                        | 0x10000000 | 
                        Dados | 
                    
                    
                        | 0x20000000 | 
                        Vídeo | 
                    
                    
                        | 0x30000000 | 
                        Áudio | 
                    
                    
                        | 0x40000000 | 
                        Entrada e Saída | 
                    
                
            
         
     
    
    
        
            
                O mapeamento da memória fica a ser definido pelo hardware que utiliza o processador baseado em ARM. Não há 
                nenhum mapeamento ou área reservada, exceto o vetor de interrupções(Hard Vectors) quando seguida a 
                implementação padrão, predefinida.
            
            
                Abaixo um exemplo de mapeamento memória real de hardware que utiliza um processador ARMv7TDMI:
            
            
                Tab. 4: Exemplo de mapeamento
                
                    
                        | Ínicio | 
                        Fim | 
                        Uso | 
                    
                
                
                    
                        | 0x00000000 | 
                        00003FFF | 
                        BIOS | 
                    
                    
                        | 0x00004000 | 
                        01FFFFFF | 
                        - | 
                    
                    
                        | 0x02000000 | 
                        0203FFFF | 
                        WRAM | 
                    
                    
                        | 0x02040000 | 
                        02FFFFFF | 
                        - | 
                    
                    
                        | 0x03000000 | 
                        03007FFF | 
                        WRAM | 
                    
                    
                        | 0x03008000 | 
                        03007FFF | 
                        - | 
                    
                    
                        | 0x04000000 | 
                        040003FE | 
                        I/O | 
                    
                    
                        | 0x04000400 | 
                        04FFFFFF | 
                        - | 
                    
                
            
            
                O uso, definição  do mapeamento é de total responsabilidade do hardware que utiliza o 8086 como processador 
                principal. O 8086 possui apenas a segmentação que deve ser levada em consideração.
            
         
     
    
    
        
            
                Por padrão, um processador ARM lê dados armazenados em memória na ordem Little-endian. Isso significa que 
                os bytes menos significativos são armazenados primeiro, seguidos dos mais significativos.
            
            
                O valor 0xAABBCCDD, em Little-endian, ficará armazenado em memória com seus bytes na ordem 0xDDCCBBAA. 
                Dependendo da implementação do processador, o formato big-endian pode ser utilizado.
            
            
                O mesmo vale para valores Halfword que tem seus bytes armazenados, obviamente, da mesma forma. Um valor 
                0xAABB é armazenado em memória como 0xBBAA.
            
            
                Tab. 3: Dados Halfword e Word em memória
                
                    
                        | Endereço | 
                        00 | 
                        01 | 
                        02 | 
                        03 | 
                        (...) | 
                        0C | 
                        0D | 
                        0E | 
                        0F | 
                    
                
                
                    
                        | 00000000 | 
                        DD | 
                        CC | 
                        BB | 
                        AA | 
                        (...) | 
                        -- | 
                        -- | 
                        -- | 
                        -- | 
                    
                    
                        | 00000010 | 
                        BB | 
                        AA | 
                        -- | 
                        -- | 
                        (...) | 
                        -- | 
                        -- | 
                        -- | 
                        -- | 
                    
                
            
         
     
    
    
        
            
                Por questões de performance, o acesso a  dados, tanto na leitura quanto na escrita na arquitetura ARM 
                devem ser em endereços de memória alinhados. Valores Halfword devem estar alinhados em endereços 
                múltiplos de 2 e valores Word devem estar alinhados em endereços múltiplos de 4. Não há restrição 
                para o tipo de dado Byte.
            
            
                Tab. 3: Dados Halfword e Word em memória
                
                    
                        | Endereço | 
                        00 | 
                        01 | 
                        02 | 
                        03 | 
                        (...) | 
                        0C | 
                        0D | 
                        0E | 
                        0F | 
                    
                
                
                    
                        | FA000000 | 
                        Byte0 | 
                        Byte1 | 
                         | 
                         | 
                        (...) | 
                        -- | 
                        -- | 
                        -- | 
                        -- | 
                    
                    
                        | FB000000 | 
                        -- | 
                        -- | 
                        Halfword | 
                        (...) | 
                        -- | 
                        -- | 
                        -- | 
                        -- | 
                    
                    
                        | FF000000 | 
                        Word | 
                        (...) | 
                        -- | 
                        -- | 
                        -- | 
                        -- | 
                    
                
            
            
                Na tabela acima, temos Byte0 e Byte1 em endereços pares e ímpares, uma halfword em um endereço par 
                alinhado em 2 bytes e uma word com endereço par alinhado em 4 bytes.
            
            
                O suporte a acesso a dados em endereços não alinhados para valores Halfword e Word 
                está disponível apenas nas arquiteturas v7+.
            
            
                O assunto registrador mapeado em memória será visto em
                Entrada e Saída.
            
         
     
    
        Histórico de atualizações
        
     
    
        
            
                - 27/01/2025 - versão inicial
 
            
         
     
    
            
            
                
                    
                    Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
                em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.