O binário multiarquitetura ou binário gordo (em tradução literal) é um programa de computador que possui um conjunto de instruções de diversas arquiteturas de computador, podendo assim rodar em diferentes plataformas de hardware. O método de implementação mais comum deste tipo de tecnologia, é a inclusão de código de máquina de vários conjuntos de instruções, gerando assim um arquivo binário evidentemente maior que aquele voltado a apenas uma plataforma computacional.

Esta tecnologia não é algo implementado apenas a nível de sistema operacional, pois existem várias maneiras de lidar com esta tecnologia, como por exemplo, um programa instalador, que seleciona a arquitetura adequada na operação de instalação, a distribuição do código-fonte, para que seja compilado no momento da instalação, ou ainda, uma compilação do tipo JIT, com a utilização de uma máquina virtual.

Apple

editar
Logo da Apple Universal Binary

Binário Multiarquitetura

editar

A implementação do binário multiarquitetura da Apple Inc., veio no período de transição arquitetural do Macintosh 68k, para o PowerPC, no ano de 1994. Muitas aplicações da antiga arquitetura, rodavam de forma transparente em sua nova plataforma envolvendo um esquema de emulação, porém, código emulado de uma forma geral roda em velocidades menores, a código nativo de uma determinada arquitetura. Eles fizeram isto juntando em um mesmo binário, trechos pertencentes a ambas as arquiteturas. Enquanto o código antigo 68k, residia na Resource fork,[1] o código mais atual PowerPC residia na data fork, no formato Preferred Executable Format,[2] criando um binário multiarquitetura.[3]

Binários multiarquitetura NeXT/Apple

editar

Binários multiarquitetura NeXTSTEP

editar

Binários gordos, foi uma funcionalidade dos sistemas operacionais NeXT e NeXTSTEP/OPENSTEP, começando pelo NeXTSTEP 3.1. No NeXTSTEP, eles eram chamados "Multi-Architecture Binaries". Os binários multiarquitetura eram compilados de forma que pudesser rodar em hadrware Motorola 68k, IA-32 e PC, sendo apenas um arquivo binário, para todas as plataformas. Um tempo depois, permitia aplicações OPENSTEP rodar em PC e várias plataformas RISC que eram suportadas por tal sistema operacional. Binários multiarquitetura eram arquivos com um formato especial, onde um arquivo armazenada um ou mais subarquivos Mach-O, e cada um destes representava uma arquitetura suportada. Cada arquivo binário multiarquitetura possuía uma estrutura (struct fat_header) contendo duas variáveis do tipo "unsigned integers". O primeiro inteiro (magic), servia para identificar o arquivo como um binário multiarquitetura. O segundo inteiro (nfat_arch), definia quantas arquiteturas aquele arquivo possuía(ou, quantas versões compiladas para diferentes arquiteturas, aquele binário possuía). Após este cabeçalho, estruturas do tipo fat_arch(struct fat_arch) existiam no arquivo, que definiam "offset"(ponto de início do arquivo), definindo onde começava determinado arquivo, o alinhamento, o tamanho da CPU e o tipo de arquitetura para o qual aquele subarquivo pertencia.

A versão da GCC entregue com as ferramentas de desenvolvimento, permitia a compilação cruzada de um código-fonte para diferentes arquiteturas do NeXTStep. Por exemplo, era possível escolher as arquiteturas alvo da compilação, com o parametro '-arch'. Esta era uma forma bastante conveniente de se distribuir um software que rodava em diversas arquiteturas.

Também era possível a criação de bibliotecas, com diferentes arquivos objeto

Mach-O e Mac OS X

editar

A Apple adquiriu a NeXT em meados de 1996, e continuaram o trabalho com o OPENSTEP. Mach-O se tornou o arquivo objeto nativo no sistema operacional livre da Apple, o Darwin(2000) e o Apple Mac OS X(2001), e os binários multiarquitetura vindos do NeXT, continuaram a ser suportados pelo sistema operacional. No Mac OS X, os binários multiarquitetura podem ser usados em diversas variantes de uma arquitetura, e binários 32-bit, com código otimizado para as gerações de processadores PowerPC G3, PowerPC G4 e PowerPC 970. Também suporta versões 32-bit e 64-bit do PowerPC.[4]

Binário universal da Apple

editar

Um binário universal é, uma tecnologia da Apple Inc. onde um tipo de arquivo executável ou um pacote de aplicativos que roda nativamente em computadores Macintosh baseados tanto em processadores PowerPC da IBM como em x86 Intel.

Linux

editar

FatELF: Binário Universal para Linux

editar

FatELF, é uma implementação para Linux e outros derivados do Unix. Tecnicamente, o FatELF é uma extensão dos arquivos tipo ELF do Linux.[5] Adicionalmente a abstração de arquitetura de computador e ABI, de acordo com o desenvolvedor Ryan C. Gordon o FatELF proveria as seguintes vantagens ao Linux[6]:

  • Distribuições Linux não precisariam separar os downloads por plataforma;
  • A separação de bibliotecas dentro de /lib, /lib32 e /lib64 não seria mais necessária na estrutura de diretórios;
  • Os binários e bibliotecas mais adequadas seriam escolhidas pelo sistema operacional, e não por shell scripts;
  • Se a Interface binária de aplicação mudar, software legado será ainda suportado;
  • Distribuição de plugins de navegador que funcionam em qualquer arquitetura;
  • Distribuição de um binário único sendo compativel entre Linux e BSD(e suas variantes), sem a necessidade de uma camada adicional de abstração;
  • O mesmo dispositivo raíz pode ser arrancado(bootado) em diferentes arquiteturas, para fins de desenvolvimento e experimentação;
  • Facilidade para aplicações portáteis, que armazenados em um pen-drive podem ser utilizados em vários computadores;

Uma máquina virtual da distribuição Ubuntu, pode ser encontrada aqui.[7] O projeto FatELF está parado, porém, os patches podem ser encontrados no site do desenvolvedor, pois após uma longa e calorosa discussão,[8] os desenvolvedores mais antigos do kernel Linux, acharam mais prudente e até mesmo pouco vantajoso a inclusão de tais patches a árvore principal de software.

Referências

editar

Ligações externas

editar


Ícone de esboço Este artigo sobre informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.

📚 Artikel Terkait di Wikipedia

Binário universal

desses arquivos. O NEXTSTEP, outro predecessor do Mac OS X, suportou o fat binary, logo um pacote de aplicações podia/pode rodar em múltiplas arquiteturas

Lista de jogos para Nintendo Switch

com/games/detail/stellar-interface-switch https://www.nintendo.com/games/detail/steredenn-binary-stars-switch https://www.nintendo.com/games/detail/stern-pinball-arcade-switch

Decomposição de posto tensorial

  Bocci, Cristiano; Chiantini, Luca (2013). «On the identifiability of binary Segre products». Journal of Algebraic Geometry. 22 (1): 1–11. ISSN 1056-3911

Unified Extensible Firmware Interface

Innovation Framework for EFI no site da Intel Apple Computer. "Universal Binary Programming Guidelines, Second Edition: Extensible Firmware Interface (EFI)

Elemental (filme)

Hargrave, Sam (17 de junho de 2023). «Disney Just Introduced Pixar's First Non-Binary Character». The Direct (em inglês). Consultado em 22 de maio de 2024  Anderton

Master Boot Record

partição correspondesse à unidade lógica C: sob o Windows, os dados em REG_BINARY sob o valor da chave \DosDevices\C: seriam: A8 E1 B9 D2 00 7E 00 00 00 00

Lista de filmes com temática LGBT de 2023

Marc (14 de novembro de 2019). «Taika Waititi Casts Fa'afafine to Play Non-Binary Soccer Player in 'Next Goal Wins' (EXCLUSIVE)». Variety (em inglês). Consultado

Linux (núcleo)

2020. This is being written to try to explain why Linux does not have a binary kernel interface, nor does it have a stable kernel interface.  «Linux Kernel