Llenguatge d'assemblador: diferència entre les revisions

Contingut suprimit Contingut afegit
m Bot elimina espais sobrants
Línia 28:
En un context molt més comercial, les principals raons per a utilitzar els llenguatges d’assemblador era crear programes de mida i sobrecàrrega mínima, i major velocitat i confiabilitat.
 
Els típics exemples de programes grans en els llenguatges d’assemblador en aquell temps&nbsp;són els sistemes operatius [[IBM PC-DOS|IBM PC DOS]] i aplicacions primerenques com la full de càlcul [[Lotus 1-2-3]], i casi tots els jocs populars per a la família [[Atari 800]] de computadors personals. Fins i tot als anys 1990, la majoria dels videojocs de consolar van ser escrits en assemblador, incloent la majoria de jocs per a la [[Sega Mega Drive|Megra Drive/Genesi]]<nowiki/>s i el [[Super Nintendo|Super Nintendo Entertainment System]]. Segons alguns experts de la indústria, el llenguatge d’assemblador era el millor llenguatge de programació disponible per obtenir el millor acompliment del [[Sega Saturn|Sega Satur]]<nowiki/>n, una consola per a la qual era notòriament desafiant desenvolupar i programar jocs. El popular joc de arcade NBA Jam (1993) n’és un altre exemple. L’assemblador ha sigut durant un llarg temps, el llenguatge de desenvolupament primari en els computadors [[Commodore 64]], [[Atari ST]], així com el [[ZX Spectrum]]. Això va ser així en gran part perquè els dialectes del [[BASIC]] en aquests sistemes oferien&nbsp;insuficient velocitat de execució, així com característiques per aprofitar completament el hardware disponible. Alguns sistemes, més notablement el [[Amiga]], fins i tot tenen IDEs amb característiques de depuració i macros molt avançats, com podrien ser el freeware ASM-One assemblar, comparables a les del [[Visual Studio|Microsoft Visual Studio]] (el ASM-Uno precedeix a aquest).
 
L’assemblador per al [[Commodore VIC-20|VIC-20]] va ser escrit per Don French i publicat per French Silk. Amb 1639 bytes de longitud, el seu autor creu que és més petit que s’ha escriut mai. L’assemblador suportava l’adreçament simbòlic usual i la definició de cadenen de caràcters o cadenes hexadecimals. També permetia expressions de direccions que podien combinar-se amb les operacions d’adició, subtracció, multiplicació, AND lògic, OR lògic, i exponenciació.
Línia 54:
* '''Assembladors modulars''', o [[macro assemblador]]s. Descendents dels assembladors bàsics, foren molt populars en les dècades dels [[1950s|50]] i els [[1960s|60]], abans de la generalització dels [[Llenguatges de programació d'alt nivell|llenguatges d'alt nivell]]. Fan tot el que pot fer un assemblador, i a més a més proporcionen una sèrie de directives per definir i invocar [[macroinstrucció|macroinstruccions]] (o simplement, '''macros'''). ''Vegeu [[X86]]''.
* '''Assembladors modulars 32-bits''' o '''d'alt nivell'''. Són assembladors que van aparèixer com a resposta a una nova arquitectura de processadors de 32 bits, molts d'ells ''mantenint la compatibilitat'' podent treballar amb programes amb estructures de 16 bits. A més a més de realitzar la mateixa feina que els anteriors, permetent també l'ús de macros, permetent utilitzar estructures de programació més complexes pròpies dels llenguatges d'alt nivell.
<br />
 
=== Exemple d'un programa que calcula el perimetre d'un cercle en gnu assembly:__________________________________________________________________________________________________________________________________________________________________________________________ ===
 
 
 
.file "cercle.c"
 
.text
 
.section .rodata
 
.LC2:
 
.string "Cercle."
 
.align 8
 
.LC3:
 
.string " Area del cercle de radi %f: %f\n\n"
 
.text
 
.globl main
 
.type main, @function
 
main:
 
.LFB0:
 
.cfi_startproc
 
pushq %rbp
 
.cfi_def_cfa_offset 16
 
.cfi_offset 6, -16
 
movq %rsp, %rbp
 
.cfi_def_cfa_register 6
 
subq $16, %rsp
 
movss .LC0(%rip), %xmm0
 
movss %xmm0, -4(%rbp)
 
movss -4(%rbp), %xmm0
 
mulss -4(%rbp), %xmm0
 
cvtss2sd %xmm0, %xmm0
 
movsd .LC1(%rip), %xmm1
 
mulsd %xmm1, %xmm0
 
cvtsd2ss %xmm0, %xmm2
 
movss %xmm2, -8(%rbp)
 
movl $.LC2, %edi
 
call puts
 
cvtss2sd -8(%rbp), %xmm1
 
cvtss2sd -4(%rbp), %xmm0
 
movl $.LC3, %edi
 
movl $2, %eax
 
call printf
 
movl $0, %eax
 
leave
 
.cfi_def_cfa 7, 8
 
ret
 
.cfi_endproc
 
.LFE0:
 
.size main, .-main
 
.section .rodata
 
.align 4
 
.LC0:
 
.long 1084227584
 
.align 8
 
.LC1:
 
.long 776530087
 
.long 1074340351
 
.ident "GCC: (SUSE Linux) 7.5.0"
 
.section .note.GNU-stack,"",@progbits
 
=== ___________________ ===
 
== Vegeu també ==
Linha 67 ⟶ 180:
[[Categoria:Llenguatges de programació per tipus|Assemblador]]
[[Categoria:Eines de programació]]
[[Categoria:Exemple]]