2
respostas

O que é um xml , exz e linguagem assembly?

Alguém aí conseguiria me explicar a definição de: xml? exz? Linguagem Assembly?

2 respostas

Oi Leonardo, tudo bem?

XML é um padrão que define uma forma de estruturar dados.

O que seria exz? Não entendi.

A linguagem assembly é uma linguagem de programação de baixo nível. Com assembly os programadores podem escrever programas legíveis por humanos que correspondem quase exatamente à linguagem de máquina. O assembly é chamado de linguagem de programação de baixo nível porque existe (quase) um relacionamento entre a linguagem assembly (usada pelos programadores) e a linguagem de máquina. A linguagem de máquina é composta somente por números, representados de forma binária, que, sob o ponto de vista do computador, representam as operações e os operandos que serão usados no processamento do programa. Para um ser humano, a linguagem de máquina é dificílima de se compreender.

  1. XML (eXtended Markup Language) é uma linguagem de marcação extensível usada para troca de informações em um formato estruturado; ou seja, que contenha dados e metadados organizados hierarquicamente. Pode ser usada, por exemplo, para especificar a gramática de uma linguagem, a qual o parser do compilador usa para validação durante a análise léxica. Mas é muito utilizada em configurações de frameworks como Hibernate, Spring, etc. Pode-se dizer ainda que um arquivo HTML bem formado é também um XML válido, pois XML é, em teoria, um superconjunto do HTML.
  2. Exz? Não sei o que é isso.
  3. Não existe uma única linguagem assembly, mas um conjunto bastante amplo de variantes. Trata-se de uma especificação legível para seres humanos de código em nível de linguagem de máquina. Cada arquitetura de processadores possui uma especificação própria; daí os termos assembly x86, assembly mips, assembly arm, etc. O conjunto de instruções de uma linguagem assembly compõe o Instruction Set da arquitetura; tipicamente categorizadas de duas formas: RISC (reduced instruction set computer) ou CISC (complex instruction set computer).

    Código assembly deve ser processado pelo assembler, programa que realiza a expansão de macros, mapeamento de endereços, linkedição e conversão das instruções para seu equivalente binário, de modo a criar um arquivo executável. Neste processo cada instrução do programa é mapeada 1-para-1 com uma instrução de máquina, visto que ambos possuem o mesmo nível semântico. Macros são meramente blocos de instruções atômicas aglutinadas que sofrem expansão em linha. E funções são blocos de instruções referenciadas pelo endereço de sua primeira instrução. Não há qualquer checagem de tipo ou número de parâmetros, todo esse processo é de responsabilidade explícita do programador. A motivação do uso de funções é reuso de código e redução no tamanho do binário, contudo impõem um overhead na forma de operações de pilha para salvamento de contexto e salto de memória.

    Em última instância, a única coisa que um processador é capaz de executar são binários bem formados conforme sua linguagem assembly própria. Quando você programa em uma linguagem de alto nível, como C/C++, Java, etc você precisa de uma camada intermediária que faça a tradução desta abstração em alto nível para um programa semanticamente equivalente em baixo nível. Normalmente isso se dá pelo uso de um compilador ou interpretador, ou ainda um híbrido entre ambos. O Java, por exemplo, especifica um assembly chamado Bytecode para o qual os programas são compilados. A JVM nada mais é que um processador virtual que executa estas instruções, isto é, estabelece uma camada de abstração com a máquina física e mapeia as instruções Bytecode para código nativo, seja por meio de interpretação ou do uso de um compilador JIT.