Eu li uma folha de dados e achei variável definida como unsigned char near Sample_X
. O que é isso e como isso difere unsigned char Sample_X
?
12
Eu li uma folha de dados e achei variável definida como unsigned char near Sample_X
. O que é isso e como isso difere unsigned char Sample_X
?
near
é um exemplo de um especificador de classe de armazenamento . Diz ao compilador algo sobre como ou onde o armazenamento da variável deve ser alocado. (Veja a resposta do filo, abaixo, para mais informaçõesnear
).Respostas:
O MCU especificado aqui é uma série Freescale MC9C08 , que usa uma versão ligeiramente aprimorada de sua arquitetura HC08. Este é um núcleo de 8 bits, que (como muitos outros) tem instruções mais curtas e acesso mais rápido a endereços de "página zero" do que outros. Os endereços de página zero têm apenas 8 bits em vez de 16 bits; portanto, as instruções referentes a eles podem ter 2 bytes em vez de 3 e levar 1 ciclo a menos para serem executadas como resultado.
A palavra-chave "near" instrui o compilador a colocar a variável em "zero page", se possível, para obter melhor desempenho. Os compiladores escritos especificamente para o desenvolvimento incorporado, como este , geralmente implementam essas extensões no idioma (aqui descrito como "Suporte C para zero página").
fonte
register
palavra - chave (nos casos em que você realmente tem certeza de que é aqui que precisa de otimização), mas um pouco menos extremo?Dependendo da arquitetura da CPU, pode haver instruções diferentes para acessar dados em endereços diferentes. Aqui está um exemplo do Keil para um de seus compiladores.
O acesso próximo possui um certo limite de memória; portanto, você pode dar dicas ao compilador para colocar algumas variáveis freqüentemente usadas em uma área acessível por instruções mais curtas (obviamente, descrever o acesso a um espaço de endereço de 32 bits é maior que o endereço de 16 bits. espaço). Isso pode ser traduzido para um código menor / mais rápido.
fonte
far
e aponta paranear
a arquitetura 8086 amplamente obsoleta. As mesmas palavras-chave são usadas de maneira relacionada, mas diferente, em microcontroladores de 8 bits.