imported>Salebot (bot: revertidas edições de 177.87.112.120 ( modificação suspeita : -65), para a edição 48565187 de LF337) |
imported>Saturnalia0 (Altera um pouco o texto da seção sobre Visualização; passa a seção sobre Programação à frente) |
||
Linha 1: | Linha 1: | ||
{{mais notas|data=abril de 2017}} | {{mais notas|data=abril de 2017}} | ||
Todo [[computador]] possui alguns conjuntos de instruções | Todo [[computador]] possui alguns conjuntos de instruções que seu processador é capaz de executar. Estas instruções, chamadas '''código de máquina''', são representadas por muitas sequências de [[bit]]s, normalmente limitadas pelo número de bits do registrador principal da [[CPU]]. Esse código é chamado de código binário. São formados por 0 e 1.<ref>[http://www.portalsaofrancisco.com.br/alfa/historia-do-computador/codigo-de-maquina.php Código de máquina definição - Colégio São Francisco]</ref> | ||
As instruções correspondem a sequências muito simples de operações, como transferir um dado em memória para a CPU ou somar dois valores e são normalmente interpretadas por [[microcódigo]]. | As instruções correspondem a sequências muito simples de operações, como transferir um dado em memória para a CPU ou somar dois valores e são normalmente interpretadas por [[microcódigo]]. | ||
Linha 11: | Linha 11: | ||
Os [[programas de computador]] raramente são criados em linguagem de máquina, mas devem ser traduzidos (por [[compiladores]]) para serem executados diretamente pelo computador. Existe a opção, em voga atualmente, de não executá-los diretamente, mas sim por meio de um [[interpretador]], esse sim rodando diretamente em código de máquina e previamente compilado. | Os [[programas de computador]] raramente são criados em linguagem de máquina, mas devem ser traduzidos (por [[compiladores]]) para serem executados diretamente pelo computador. Existe a opção, em voga atualmente, de não executá-los diretamente, mas sim por meio de um [[interpretador]], esse sim rodando diretamente em código de máquina e previamente compilado. | ||
== Programação em código de máquina == | |||
Para se programar em código de máquina, deve-se obter os códigos de instruções do processador utilizado, contendo opcodes, operandos e formatos de cada instrução. | |||
Por esse motivo, foi criada uma linguagem de programação chamada [[linguagem de montagem]] (Assembly Language), composta de códigos mnemônicos que, do ponto de vista técnico, é tão próxima do processador quanto o código de máquina, mas é humanamente mais fácil de se compreender uma vez que seus códigos são geralmente acrônimos do inglês. Por exemplo ´mov´ de mover, ´rep´ de repetição e assim por diante. | |||
== Visualização de programas em linguagem de máquina == | == Visualização de programas em linguagem de máquina == | ||
Um programa em código de máquina, assim como todo outro programa compilado, é um [[arquivo binário]]. Como tal, não pode ser visualizado num editor de texto, ou, que mostrará um texto sem significado devido à existência de [[carácter de controle|caracteres de controle]]. Abaixo pode-se ver o que é mostrado ao se abrir um código de máquina de um PC com um editor de texto: | |||
<pre> | <pre> | ||
Linha 43: | Linha 48: | ||
No exemplo acima é mostrado à esquerda o endereço da memória (segmento:deslocamento), ao centro o código em hexadecimal e à direita como seria o texto em [[ASCII]]. | No exemplo acima é mostrado à esquerda o endereço da memória (segmento:deslocamento), ao centro o código em hexadecimal e à direita como seria o texto em [[ASCII]]. | ||
{{referências}} | {{referências}} |
Edição das 12h03min de 21 de outubro de 2017
Todo computador possui alguns conjuntos de instruções que seu processador é capaz de executar. Estas instruções, chamadas código de máquina, são representadas por muitas sequências de bits, normalmente limitadas pelo número de bits do registrador principal da CPU. Esse código é chamado de código binário. São formados por 0 e 1.[1]
As instruções correspondem a sequências muito simples de operações, como transferir um dado em memória para a CPU ou somar dois valores e são normalmente interpretadas por microcódigo.
Um programa em código de máquina consiste de uma sequência de números que significam uma sequência de instruções a serem executadas. É normal a representação da linguagem de máquina por meio de números (opcodes) constantes e variáveis em sistema binário ou sistema hexadecimal. Alguns computadores também têm seus opcodes representados no sistema octal.
Microprocessadores têm, normalmente, seus códigos de operação como múltiplos de 2, 8 e 16, pois usam arquiteturas com registradores de 8, 16, 32, 64 ou 128 bits em 2006. Porém, existem máquinas com registradores de tamanho diferente.
Os programas de computador raramente são criados em linguagem de máquina, mas devem ser traduzidos (por compiladores) para serem executados diretamente pelo computador. Existe a opção, em voga atualmente, de não executá-los diretamente, mas sim por meio de um interpretador, esse sim rodando diretamente em código de máquina e previamente compilado.
Programação em código de máquina
Para se programar em código de máquina, deve-se obter os códigos de instruções do processador utilizado, contendo opcodes, operandos e formatos de cada instrução.
Por esse motivo, foi criada uma linguagem de programação chamada linguagem de montagem (Assembly Language), composta de códigos mnemônicos que, do ponto de vista técnico, é tão próxima do processador quanto o código de máquina, mas é humanamente mais fácil de se compreender uma vez que seus códigos são geralmente acrônimos do inglês. Por exemplo ´mov´ de mover, ´rep´ de repetição e assim por diante.
Visualização de programas em linguagem de máquina
Um programa em código de máquina, assim como todo outro programa compilado, é um arquivo binário. Como tal, não pode ser visualizado num editor de texto, ou, que mostrará um texto sem significado devido à existência de caracteres de controle. Abaixo pode-se ver o que é mostrado ao se abrir um código de máquina de um PC com um editor de texto:
MZÀ�$Pÿv�èŠÿ]Ë3ÀP¸�F� ë�ƒF��¸�< uè2Àëä�Àt�Bª Àu�C†à2Àùã�¬I,"t��"<\u�€<"u�¬I�öÃé�îY�Ê.Ž�t�‰�”�C�Û�Û‹ô‹ì+ërâ‹å‰.–�Œ�˜�ã�‰v¸�vüÿv� ÿv��èÅ�ƒÄ�ÿvþÿvü�èüêYY‹V�‹F�ë�Rÿvþÿvü�èWíƒÄ�‹å]ËU‹ìƒìHVW‹~�‹F�‰Fþ�Àu ´�Í!´3Àé•Š�˜‹ØŠ‡Ïn
Pode-se editar o código de máquina usando editores hexadecimais, como por exemplo o "debug" que roda sobre o DOS do Windows. Com estes programas pode-se ver o código não em binário, mas em hexadecimal, como mostrado abaixo nesta captura da tela do DOS com o debug aberto editando o programa "v.exe": (tecla-se ? para comandos e d para dump)
C:\Utility>debug v.exe -d 0 100 0E3D:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 F0 07 8A 03 . ........O..... 0E3D:0010 F0 07 17 03 F0 07 DF 07-01 01 01 00 02 FF FF FF ................ 0E3D:0020 FF FF FF FF FF FF FF FF-FF FF FF FF BD 0D 4C 01 ..............L. 0E3D:0030 D0 0C 14 00 18 00 3D 0E-FF FF FF FF 00 00 00 00 ......=......... 0E3D:0040 05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0E3D:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 .!........... 0E3D:0060 20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 ..... 0E3D:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 ........ 0E3D:0080 00 0D 76 2E 65 78 65 0D-44 4F 57 53 5C 73 79 73 ..v.exe.DOWS\sys 0E3D:0090 74 65 6D 33 32 5C 64 6F-73 78 0D 0D 64 61 20 72 tem32\dosx..da r 0E3D:00A0 65 64 65 20 28 63 61 72-72 65 67 61 72 20 61 6E ede (carregar an 0E3D:00B0 74 65 73 20 64 6F 20 64-6F 73 78 2E 65 78 65 29 tes do dosx.exe)
No exemplo acima é mostrado à esquerda o endereço da memória (segmento:deslocamento), ao centro o código em hexadecimal e à direita como seria o texto em ASCII.