Crivo de Eratóstenes Simples em C
Crivo simples. Valores devem ser ajustados. Obs[1]: Dependendo do compilador, sistema ou memória disponível, corrigir para não haver overflows. Obs[2]: O tamanho do crivo pode ser calculado exato e quase exato, dependendo do limite colocado. Obs[3]: Quem puder testar e fazer "benchmark" com valores elevados e sistemas mínimos, máquinas virtuais etc. eu agradeceria.
Por: Perfil removido
"Clear Screen" para Linux x86 com Inline Assembly (embutido no código) em C
Esta função dentro deste código realiza o mítico "clear screen" em ANSI C. Uma chamada de interrupção de kernel para imprimir uma sequência de escape de terminal que limpe o código. Nenhum segredo para compilar. Apenas uso simples do GCC.
Por: Perfil removido
"Clear Screen" para Linux x86 em Assembly Puro (Nasm - Netwide Assembler)
Obs[1]: Testado apenas para o nasm (Netwide Assembler.). Não funciona com "as" (GNU Assembler). Nem o outro para o GNU Assembler funciona com Nasm. Obs[2]: Sempre é bom lembrar: não funciona em nada que rode "INT 21h". TASM está fora... Aqui é int 0x80 (int 80h). Obs[3]: O comando "strip" retira informações usadas para depurar com o gdb. Como está tudo ok, estas serão retiradas para ficar menor ainda. Ou então usa-se a opção "-s" no comando "ld", que já faz isso direto. Obs[4]: (Já ocorreu antes) Sequẽncias de escape não estão sendo visttas corretaente. Qualquer coisa que use BACKSLASH "\" + "0", por exemplo. Estão saindo assim "\" + "0" = "{" + FONTE + "}" Sem as aspas e os espaços em branco. Em todo o caso, recomendo baixar o código para visualizar melhor. ======================================= Este código simplesmente retira os caracteres do console após executado muito parecido com o comando "clear" do Unix/Linux. Para gerar o executável, usar: "$ nasm -f elf clrscr001.asm" Em seguida usar: "ld -s clrscr001.o -o clrscr001" A opção "-s" é opcional e aplica um "strip -s" automaticamente. Se alguém quiser usar o gdb, não deverá aplicar "-s", nem usar "strip -s" após a linkedição. Depois para executar: "$ ./clrscr001" Após a montagem, por aqui ficou com apenas 665 bytes. E aaṕos o processo de "strip", retirando informações de montagem, linkedição etc. seja junto com a linkedição ou após "strip -s" ficou com apenas 348 bytes. Quer dizer, também ficou menor que os 512 bytes da MBR de um HD convencional, mas uns poucos bytes maior que um equivalente feito em GNU Assembler.
Por: Perfil removido
"Clear Screen" para Linux x86 em Assembly Puro (GNU Assembly)
Obs[1]: Testado apenas para o as (GNU Assembly.). Não tentei com o Nasm. Obs[2]: Óbvio, mas bom ressaltar: não funciona em nada que rode "INT 21h". TASM está fora... Obs[3]: (De última hora) Está aparecendo um sinal entre chaves escrito em maiúsculo "FONTE" no lugar do BACKSLASHZERO (barra invertida-zero), sinal de caractere zero e de fim de string em C, quando alguma coisa lê uma string e entende o símbolo como zero. "\" + "0" = BACKSLASHZERO = Caractere nulo. Ditando a grosso modo, caso não dê pra ver corretamente, fica sendo a seguinte linha deste modo: .ascii "BACKSLASHZERO33cBACKSLASHZERO" O "33" fica aonde está, junto com a letra "c" (minúscula). Apenas troca-se o nome da barra pela barra e o ZERO pelo algarismo "0". ======================================= Este código simplesmente retira os caracteres do console após executado muito parecido com o comando "clear" do Unix/Linux. Para gerar o executável, usar: "$ as clrscr001.s -o clrscr001.o" Em seguida usar: "ld clrscr001.o -o clrscr001" Depois para executar: "$ ./clrscr001" Após a montagem, por aqui ficou com apenas 591 bytes. E logo depois ao usar "$ strip -s clrscr001" para retirar informações de montagem, link edição etc ficou com apenas 308 bytes. Quer dizer, menor que os 512 bytes da MBR de um HD convencional. Obs: O comando "strip" retira informações usadas para depurar com o gdb. Como está tudo ok, estas serão retiradas para ficar menor ainda.
Por: Perfil removido
Crivo de Eratóstenes Simples em Fortran 95
Para compilar, use: "gfortran sieve001.f95 -o sieve001", igual GNU Pascal e GCC Particularidades desta linguagem: - Início e fim de blocos demarcados por palavras, lembrando Pascal; - Cláusula "Program" ao início do programa semelhante a Pascal; - Declaração de variáveis no início do código, como em Pascal. - Arrays podem ser bem flexíveis ao serem dimensionados; - Usam-se parêntesis para determinar elementos de um array; - A simples declaração "LISTAGEM(:)=12345" preenche todos os elementos do array LISTAGEM com o mesmo valor. - Cláusula de fim de blocos terminam geralmente com a seguinte estrutura: "END" + "Comando titular do bloco" + "Identificador criador pelo programador". Exemplos: END DO, END IF, END PROGRAM XXXXXXX, END FUNCTION XXXXXXX; - Comentários são declarados após um ponto de exclamação; - Operadores lógicos são identificados por palavras abreviadas entre pontos (.OP.). Exemplos: .AND. .OR. .NOT. Provavelmente foi daí que veio .AND., .T. .F. do Dbase, Clipper etc.; - Originalmente "maior que (>)", "menor que (<)", "maior ou igual que (>=)", "menor ou igual que (<=)" etc em Fortran escreviam-se igual ao que se usa hoje em Bash Script ou no comando test: * Maior que: .GT. (Greater Than). Em Bash: -gt * Menor que: .GT. (Less Than). Em Bash: -lt * Maior ou igual que:: .GE. (Greater or Equal Than). Em Bash: -ge * Menor ou igual que:: .LE. (Less or Equal Than). Em Bash: -ge * Igual a: .EQ. (Equal). Em Bash -eq * Diferente de: .NE. (Not Equal). Em Bash -ne Usados dentro de colchetes em scripts em comandos "if/elif" e "while", por exemplo. - Atualmente os operadores simbólicos consagrados do tipo ">" para a omparação "maior que" podem ser usados em lugar das letras e pontos. No script fica como exemplificado. - Formatação de entrada/saída de strings e números, são mais complicadas que em C. São feitas com uma variável de string pré-declarada ou com um comando chamado "FORMAT", podendo até ter um número de linha de código (label) para identificá-lo. FORMAT lembra um comando chamado "PICTURE" do Clipper/XBase; - Impressão de término de linha ('\n' em C) no comando Write pode ser cancelada com a incomum declaração "Advance='no'"; - Cláusula "PARAMETER" pode definir constantes; - Strings são definidas por uma notação semelhante a uma multiplicação de um tipo de dado (Character) por um valor. Exemplo: Character*5. - Não existe operador para resto de divisão (módulo, sinal de porcentagem "%" em C), sendo necessário o uso de uma função já implementada na linguagem (não aparece neste código). - Não encontrei operador de auto-incremento semelhante ao "duplo mais" em C. Fortran não é lacônico, conciso e simbólico quanto C, porém pode ser tão poderoso quanto. Existem algumas facilidades sintáticas que não devem ser subestimadas.
Por: Perfil removido
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Assisti Avatar 3: Fogo e Cinzas (4)
Conky, alerta de temperatura alta (11)









