Assim como várias outras arquiteturas, a ARM também possui suas flags que mostram o status atual do 
                processador. A tabela abaixo mostra os bits do registrador CPSR, da esquerda para direita, divididos 
                em: flags de condição, flags de controle e bits de modos de operação do processador.
            
            
                Os bits 8 a 27 são reservados para as futuras atualizações da arquitetura e não são acessíveis.
            
            
                Tab. 7: CPSR
                
                    
                        | Bit 31 | 
                        Bit 30 | 
                        Bit 29 | 
                        Bit 28 | 
                         | 
                         | 
                         | 
                         | 
                        Bit 7 | 
                        Bit 6 | 
                        Bit 5 | 
                        Bit 4 | 
                        Bit 3 | 
                        Bit 2 | 
                        Bit 1 | 
                        Bit 0 | 
                    
                
                
                    
                        | N | 
                        Z | 
                        C | 
                        V | 
                        - | 
                        - | 
                        - | 
                        - | 
                        I | 
                        F | 
                        T | 
                        M4 | 
                        M3 | 
                        M2 | 
                        M1 | 
                        M0 | 
                    
                
            
            
            
                As flags de condição da armv4 são utilizadas para a tomada de decisões quando uma instrução de 
                branch condicional é utilizada, por exemplo.
            
            Ex:
            
                B		;Branch Always
                BEQ		;Branch if Equal
            
            
                A alteração dessas flags é feita de forma explícita adicionando o sufixo S nas instruções que 
                permitem o seu uso. Algumas instruções atualizam as flags sem necessidade de sufixo.
            
            Ex:
            
                ADDS R0,R0,#1	;R0 <- R0 + 1
            
            Negative - N
            
                A flag N é indica se um valor contido em um registrador é negativo ou positivo. Caso o bit mais 
                significativo seja 1, a flag N tem seu valor atualizado para 1. Caso contrário, N é atualizada o valor 0.
            
            Zero - Z
            
                A flag Z informa que um valor contido em um registrado é zero ou não. Se zero, o valor de Z é atualizado
                para 1. Caso contrário, Z é atualizado para 0.
            
            Overflow - V
            
                Com a flag V, podemos descobrir se ocorreu um overflow em alguma instrução aritmética de soma ou subtração, 
                por exemplo.  Quando ocorre um overflow, V é atualizada para 1. Caso o overflow não ocorra seu valor é atualizado para 0.
            
            Carry - C
            
                O “vai-um” e “vem-um” nas operações de soma e subtração, por exemplo, são representados pela flag Carry. 
                Quando ocorre um “vai-um”, C é atualizada para 1, e para 0 quando não ocorre. 
            
            
                Na subtração, a flag C tem o comportamento contrário. Essa flag também é utilizada pelas instruções de 
                deslocamento, rotação e multiplicação.
            
            
            
                As flags de controle são compostas pelas flag I, F e T que correspondem as flags que habilitam/desabilitam 
                as interrupções IRQ(Interrupt Request) e FIRQ(Fast Interrupt Request), e o tipo de instrução como ARM(32-Bits) ou Thumb(16-Bits).
            
            
                Para as flags I e F, quando seus valores são atualizados para 1, as suas interrupções correspondentes 
                são desabilitadas e não reconhecidas. Caso sejam 0, suas interrupções são habilitadas e executadas.
            
            
                Em relação a flag T, disponível em armv4T, quando atualizadas para 1, as instruções no formato ARM são 
                executadas. Caso seja 0, instruções no formato Thumb são executadas. Nas versões v1, v2, v3, e outras versões que não possuem a extensão T, essa flag deve sempre ser definida para 0. 
            
            
            
                Os bits de modo são responsáveis por configurar o modo de execução do processador como mencionado em Registradores. Quando uma interrupção é gerada, os bits M[4:0] do CSPR são setados de acordo com a tabela abaixo. Os registradores de uso dos modos também são mostrados.
            
            
                Tab. 8: Bits de Modo e Registradores 
                
                    
                        | M[4:0] | 
                        Modo | 
                        Registradores | 
                    
                
                
                    
                        | 10000 | 
                        User | 
                        PC, R14 a R0, CPSR | 
                    
                    
                        | 10001 | 
                        FIQ | 
                        PC, R14_fiq to R8_fiq, R7 a R0, CPSR, SPSR_fiq | 
                    
                    
                        | 10010 | 
                        IRQ | 
                        PC, R14_irq, R13_irq,R12 a R0, CPSR, SPSR_irq | 
                    
                    
                        | 10011 | 
                        SVC | 
                        PC, R14_svc, R13_svc,R12 a R0, CPSR, SPSR_svc | 
                    
                    
                        | 10100 | 
                        Reservado | 
                         | 
                    
                    
                        | 10101 | 
                        Reservado | 
                         | 
                    
                    
                        | 10110 | 
                        Reservado | 
                         | 
                    
                    
                        | 10111 | 
                        Uso geral | 
                        PC, R14_abt, R13_abt,R12 a R0, CPSR, SPSR_abt | 
                    
                    
                        | 11000 | 
                        Reservado | 
                         | 
                    
                    
                        | 11001 | 
                        Reservado | 
                         | 
                    
                    
                        | 11010 | 
                        Reservado | 
                         | 
                    
                    
                        | 11011 | 
                        Uso geral | 
                        PC, R14_und, R13_und,R12 a R0, CPSR, SPSR_und | 
                    
                    
                        | 11100 | 
                        Reservado | 
                         | 
                    
                    
                        | 11101 | 
                        Reservado | 
                         | 
                    
                    
                        | 11110 | 
                        Reservado | 
                         | 
                    
                    
                        | 11111 | 
                        System | 
                        PC, R14 a R0, CPSR ( V4+ apenas) | 
                    
                
            
            
                Os modos acima são “acionados” quando uma interrupção/exceção de hardware ou software ocorre. O assunto 
                interrupções será visto um pouco mais adiante.
            
            
                Os modos reservados são de uso em futuras atualização da arquitetura e não devem ser utilizados na v4.