Introdução spin2cpp é uma ferramenta de linha de comando para converter arquivos. spin para o Parallax Hélice para C ou C. spin2cpp tem dois modos de operação: como um compilador Spin e como uma ferramenta de conversão de código-fonte. Em qualquer caso, o spin2cpp converterá o dado arquivo de spin e todas as suas dependências. Usar spin2cpp como um compilador Spin permite que Spin (que normalmente é interpretado) seja compilado em código PASM em vez disso, para uma velocidade de execução muito maior (ao custo de uma pegada de código maior). Spin2cpp foi originalmente projetado para uso com o compilador C de hélice-elf-g, mas as versões mais recentes apresentam suporte limitado para saída C simples que pode ser compilada com Catalina ou hélice-elf-gcc. Além disso, há um suporte preliminar para o código da hélice 2. Geralmente você vai querer usar modelos de memória PropGCCs CMM, LMM ou XMMC com a saída, embora um pequeno objeto Spin possa encaixar em um COG com o modelo de memória - mcog. Mensagem de ajuda spin2cpp Sua saída pode variar, mas deve ser semelhante. A otimização é sempre uma boa idéia (o GCC produz código pobre sem ele). No entanto, a otimização de - Os para tamanho, que geralmente é o preferido para PropellerGCC, às vezes não funciona bem. Isso ocorre porque alguns objetos Spin compartilham variáveis entre COGs eo otimizador do GCC não sabe sobre isso e pode otimizar as referências ausentes que ele realmente precisa. Tente - Os primeiro, e se ele não funciona use - O1. Para obter um controle mais detalhado sobre como o spin2cpp compila seu programa, consulte a seção abaixo na anotação do arquivo Spin. As seguintes opções C são passadas para o compilador GCC a partir da linha de comando spin2cpp: qualquer coisa que comece com - O (para otimização, como - Os. - O0 ou - O3) qualquer coisa que comece com - m (para seleção de modelo de memória, como Como - mcmm ou - mlmm) qualquer coisa começando com - f (para sinalizadores independentes da máquina, link) - o outputname (para especificar o nome do arquivo elf) - D define (para especificar o preprocessor CPP define) Usando o spin2cpp como uma ferramenta de conversão Às vezes você pode querer Para converter o arquivo Spin em C ou C, por exemplo, para usá-lo em outro projeto. C saída é o padrão, então você não tem que fazer nada de especial para isso. Apenas: irá produzir hello. cpp e hello. h. Para gerar código C simples, use --ccode para produzir hello. c. Spin2cpp também tem várias opções para converter a montagem da hélice (PASM) para a sintaxe do montador GNU (GAS) que o PropellerGCC pode montar em si ou para um blob binário. Código de montagem é inalterado e quase certamente será executado sem modificação Nada especial precisa ser feito com o blob para permitir linker coleta de lixo no projeto. Constantes são compiladas no blob Para fazer quaisquer alterações, você terá que voltar a executar o spin2cpp no arquivo de origem original com as alterações. Sintaxe muito semelhante ao PASM, com a adição de alguns comandos psuedo PropllerGCC e diretivas assembler Permite que você faça alterações em seu código PASM, sem ter que voltar a executar spin2cpp Seu ligeiramente mais difícil permitir a coleção de lixo linker com seções GAS. Para fazer um blob binário para Se você especificar --gas na linha de comando enquanto converte para C ou C, em vez de uma matriz de dados, spin2cpp irá gerar assembly GAS inline. Isso torna o C / C resultante um pouco mais próximo de legível, uma vez que a parte PASM agora é montagem em linha. Se você especificar --gas --dat, a seção DAT será exibida como um arquivo GAS. S. Você deve vincular neste arquivo. S com o programa você mesmo. Isso requer um pouco mais de esforço, incluindo a modificação de quaisquer makefiles que seu projeto possa usar. Para uso comum, não recomendamos usar --gas. Desde que o montador construído em spin2cpp realmente funciona muito bem. Spin File Annotation spin2cpp reconhece um comentário de anotação especial que permite que você forneça informações sobre o código, sem afetar a operação do programa Spin. Esses comentários de anotação assumem a forma de: onde o texto é substituído por uma palavra-chave ou bloco de código. Enquanto você não é obrigado a anotar seus arquivos Spin dessa forma, ele permite que spin2cpp gere código melhor. Recomendamos sempre anotar seus arquivos de origem antes da conversão. Para marcar uma variável como volátil você usa a anotação: Você deve marcar todas as variáveis que são compartilhadas entre engrenagens. Se você não tiver certeza, você pode marcar todas as variáveis, mas esteja ciente de que isso irá impactar negativamente as opções de otimização que PropellerGCC tem. Você também pode fornecer a versão C / C de uma função: stdint. h uso (int32t e amigos) int32t é a maneira padrão C99 de especificar um inteiro de 32 bits. Spin2cpp usa os tamanhos stdint. h para suas variáveis para reduzir a chance de insetos rastejar dentro Embora, no atual Propeller um int é de 32 bits, um char é de 8 bits, e assim por diante, isso pode não necessariamente manter para todos os usos futuros Do código. O dimensionamento explícito de variáveis, enquanto sintaticamente feio, garante que não importa qual plataforma você executar o código nele sempre permanecerá um número definido de bits. Loops com Yield () Loops de repetição vazios são freqüentemente usados para aguardar hardware ou outro COG para fazer algo. O otimizador do GCC pode ser bastante agressivo sobre como mover e excluir o código, então spin2cpp coloca a chamada para Yield () em para impedir que o compilador mova qualquer coisa após o loop. O asm volátil com memória como um clobber indica que qualquer memória pode mudar durante o loop, e novamente é para manter o otimizador de fazer suposições. Yield () não vai realmente adicionar qualquer código, é apenas uma nota para o compilador que o mundo exterior pode estar fazendo coisas que não sei sobre. No código C / C puro, você normalmente marca as variáveis como voláteis para isso, mas o spin2cpp não é capaz de fazer análise suficiente para dizer quais variáveis podem ser voláteis. Se você editar manualmente os arquivos C / C gerados após a conversão, você pode remover o Yield () se a variável que o loop espera é volátil. O PostEffect define Este define é necessário para operações pós-efeito que Spin tem, mas C não. Por exemplo, informa ao compilador Spin que y será adicionado a 1 eo resultado atribuído a x. E a variável y é definida para todos os bits 1 (FFFFFFFF). C / C não tem um operador equívoco, então spin2cpp gera algo como Limpando a Saída Gerada Automaticamente Se seu código (na unidade de compilação atual) não usar qualquer um do código padronizado produzido por spin2cpp (como Yield () ou PostEffect ()), Então você pode removê-lo com segurança. Se você tirar muito o compilador será certo para que você saiba. Você também pode renomear variáveis com segurança. A maneira mais fácil de fazer isso é usando um comando renomear o refator em um IDE, como o Eclipse ou o NetBeans. Se você optar por fazê-lo manualmente, certifique-se de alterar cada instância do nome. Se você esquecer qualquer, o compilador provavelmente irá informá-lo. Você deve ter cuidado com a mudança de constantes. Atualmente, spin2cpp não faz uma conversão completa e limpa de constantes. Por exemplo (a partir do código do LED Quickstart touch): GenDepex. exe GenDepex. exe ou GenDepex. py - Converta a cadeia de dependência do arquivo para a expressão de dependência PI binária. Descrição GenDepex gera a expressão de dependência PI binária de acordo com o tipo de módulo analisando a seqüência de expressão de dependência de entrada ou o arquivo dxs pré-processado. Para o tipo de módulo PEIM, a expressão de dependência PEI será gerada. Para DXEDRIVER, UEFIDRIVER, DXERUNTIMEDRIVER, DXESALDRIVER e DXESMMDRIVER. A expressão de dependência DXE será gerada. A ferramenta GenDepex não é uma ferramenta autônoma. Quando a seção Depex é especificada no módulo INF, ela será usada pela ferramenta Construir. A ferramenta Construir primeiro analisa o conteúdo na seção depex para criar a seqüência de expressão de dependência e, em seguida, o GenDepex analisará a seqüência gerada. Quando uma seção depex não é especificada, mas o arquivo File. dxs existe, a ferramenta GenDepex será usada juntamente com o compilador e a ferramenta de corte EDKII. O File. dxs primeiro é pré-processado pelo compilador e, em seguida, processado pela ferramenta de corte para remover todos os outros código, exceto para o conteúdo de dependência, finalmente o GenPepex processará o arquivo de dependência pré-processado. Se nenhuma opção for especificada, a ferramenta exibirá uma mensagem de erro. Códigos de status retornados A ação foi concluída conforme solicitado. A ação falhou. Analise a seqüência de dependência de entrada baseada no tipo de módulo DXEDRIVER para gerar a expressão de dependência PI binária no arquivo test. depex de saída. Analise a seqüência de dependência de entrada baseada no tipo de módulo DXEDRIVER para gerar a expressão de dependência PI binária no arquivo test. depex de saída no modo de otimização. Analise o arquivo de dependência de entrada pré-processada (test. iii) com base no tipo de módulo DXEDRIVER para gerar a expressão de dependência PI binária na saída test. depex. O arquivo Test. iii é o arquivo dxs pré-processado como: Copyright (c) 2007 - 2016, Intel Corporation. Todos os direitos reservados. Este programa e os materiais que o acompanham são licenciados e disponibilizados nos termos e condições da Licença BSD que acompanha esta distribuição. O texto completo da licença pode ser encontrado em: O PROGRAMA É DISTRIBUÍDO SOB A LICENÇA BSD EM QUATAS ISQUOT BASE, SEM GARANTIAS OU REPRESENTAÇÕES DE QUALQUER TIPO, SEJA EXPRESSA OU IMPLÍCITA. Administração do Armazenamento Seguro no Sistema de Arquivos (AS ABAP) Este procedimento lista os comandos com os quais você pode administrar os registros de dados no armazenamento seguro, por exemplo, inserindo ou verificando registros. Para fazer isso, use a ferramenta de linha de comando rsecssfx. Que é entregue como parte do arquivo executável do kernel. Inicie a ferramenta de linha de comando com o perfil de instância do sistema. A partir daí, a ferramenta determina os valores dos parâmetros de perfil SAPSYSTEMNAME. Rsec / ssfsdatapath. E rsec / ssfskeypath. Para fazer isso, digite um comando com a seguinte sintaxe: rsecssfx pf ltprofilegt ltcommandgt ltcommand argumentsgt ltcommand optionsgt Em vez de usar o perfil, você também pode definir as variáveis de ambiente SAPSYSTEMNAME. RSECSSFSDATAPATH. E RSECSSFSKEYPATH. Assim que você definir essas variáveis de ambiente, elas substituirão o valor correspondente do perfil. Esta opção de configuração existe para todas as ferramentas autônomas usando o armazenamento seguro no sistema de arquivos (por exemplo, r3trans ou tp). Não existe nenhuma opção de configuração no kernel do AS ABAP (DispWork). Sendo uma parte do kernel, o armazenamento seguro no sistema de arquivos pode ser configurado nos parâmetros do perfil. Insira os comandos, argumentos de comando e opções de comando necessários para sua ação na linha de comando. Valor a ser armazenado, que você precisa deixar de fora ao usar a opção - valuefile ou binário. Se seu sistema não é um sistema Unicode, você deve usar caracteres do conjunto de caracteres ASCII. Caso contrário, ocorrerá um erro. Se o sistema for um sistema Unicode, também pode armazenar caracteres fora do conjunto de caracteres ASCII. Para evitar problemas com páginas de código ou conjuntos de caracteres, o conteúdo desse argumento deve ser a representação UTF-8 do valor a ser armazenado. Você pode inserir diretamente caracteres que estão contidos no conjunto de caracteres ASCII. Você precisa digitar outros caracteres, por outro lado, como um código hexadecimal de dois caracteres, prefixado com um sinal de porcentagem () como um caractere de escape. O nome Jrgen contém o umlaut alemão. Para o qual a representação UTF-8 é 0xC3, 0xBC. O valor para a linha de comando é então JC3BCrgen. Se você tiver um AS ABAP disponível, você pode usar o relatório RSECSSFXESCAPE para apoiá-lo ao criar um valor com os caracteres de escape corretos. O sistema armazena o valor não criptografado. Isso afeta os valores necessários para se conectar ao banco de dados, mas que não são sensíveis, como o nome do host ou os parâmetros de conexão. Se você armazenar valores não criptografados, você pode exibi-los usando o comando get. - valuefile ltfile namegt Com esta opção, o sistema não espera que o valor seja armazenado no registro de dados como um argumento de comando, mas sim como o conteúdo do arquivo especificado na opção. Para valores binários, o arquivo deve conter o valor em formato UTF-8 e deve iniciar com a marca de ordem de bytes UTF-8 correta (0xEF, 0xBB, 0xBF). Ele também não deve conter outros caracteres além do valor a ser armazenado, como quebras de linha ou guias, se estes não fizerem parte do valor real. Desative a verificação de marca de ordem de bytes UTF-8 com esta opção. O arquivo de valor deve conter somente o valor (sem marca de ordem de byte). Retorno de carro e caracteres de alimentação de linha são permitidos, mas são ignorados sem aviso. Esta opção armazena um valor binário. O valor é lido de um arquivo que deve ser passado por valuefile. Insere ou sobrescreve um registro de dados no armazenamento seguro. Tentativas de descriptografar registros de dados que foram colocados no armazenamento seguro com uma chave de criptografia diferente da chave atual. Este comando destina-se a ser uma solução de emergência se você tiver alterado o arquivo de chave fora da ferramenta e, portanto, não pode mais ler os registros de dados. O pré-requisito para isso, no entanto, é que você ainda conhece a chave de criptografia que foi usada para inserir as entradas que não podem mais ser lidas. Se você usar a ferramenta para alterar a chave, automaticamente criptografa os registros de dados. Você não pode destruir dados executando este comando. Registros de dados que a ferramenta ainda não é possível descriptografar usando a chave de criptografia antiga especificada são mantidos como estão. Isso significa que você pode tentar descriptografar esses registros novamente mais tarde.
No comments:
Post a Comment