Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia durnapedija! Nusišnekėjimų šventovė!

Subskraibink Pipediją ant FB:

Asembleris

Iš Pipedijos - durniausios enciklopedijos.
Peršokti į: navigaciją, paiešką

Asembleris, dar vadinamas assembler arba Asm - tokia programavimo kalba būtų, bet išties tai ne viena programavimo kalba, o mažiausiai daugiau, negu kad yra skirtingų procesorių, nes kiekvienas procesorius turi savo asemblerį, kuris visiškai skiriasi nuo kitų procesorių.

Jei jau taip žmogiškai pasakyti, kad normalūs hakeriai suprastų, o visokie lameriai imtų tampytis nuo traukulių, nes jie yra durniai, tai išties kiekvienas procesorius yra ne kas kita, o programavimo kalba, o jei tiksliau - tai tam tikros programavimo kalbos interpretatorius. Būtent taip. Taigi, kiek procesorių - tiek skirtingų programavimo kalbų.

Aišku, procesoriai žmogiškų kalbų nesupranta, o žmonės bitais irgi nešneka, tai todėl atsiranda tokie transliatoriai, kurie tą procesoriaus kalbą leidžia užrašyti žmogui suprantamomis santrumpomis. Tai vat tos santrumpos yra vadinamos asemblerio kalba, o transliatoriai - asembleriais.

Aišku, tam pačiam procesoriui gali būti įvairių asemblerių, kurie kartais skiriasi tiek smarkiai, kad būna visiškai nepanašūs vieni į kitus, tai ir vėl gaunasi naujos kalbos, tiktai kad paveldėjusios iš tų procesorių kai kurias ypatybes, kaip kokie nors adresacijos būdai, registrai, kažkokios ten komandos ir panašiai.

Iš asemblerių kilo garsi ir populiari programavimo kalba Intercall.

Hello World su visokiais asembleriais

Štai čia jums duosime visokių pavyzdžių, o ir ne vieną, nes skirtingi asembleriai labai skiriasi, o dar ir atsiranda visokios pačių kompiuterių ir netgi OS ypatybės, taip kad labai jau skiriasi viskas, netgi jei procesorius vienodas būtų. Todėl pamatysite čia, kaip skirtingi asembleriai vieni į kitus visiškai nepanašūs.

Tai ir dar papildomai, visokios firmos skirtingus asemblerius kuria, tai netgi jei viskas vienodai, tai visvien būna skirtingai. Visgi net jei asembleriai ir labai smarkiai skirtingi, tai dažniausiai jie palaiko paties procesoriaus gamintojo sukurtą sintaksę. Išimtis gal bebūtų tik UNIX naudojami asembleriai, kurie kartais naudoja tik ATT sintaksę, nes su ja galima paprasčiau perkeldinėti programas iš vieno asemblerio į kitą.

i8086 TASM asembleris, DOS

Čia vat Turbo asembleris, kuris iš Borland firmos, skirtas visokiems x86 kompiuteriams:

.model tiny
.code
org 100h

main proc near
  mov ah,09h
  mov mov dx,offset message
  int 21h
  mov ah,4ch
  mov al,00
  int 21h
endp
message db "Hello World $"
end main

i386 GAS asembleris, Linux

Čia vat GAS asembleris, kuris su AT&T sintakse, būdinga visokioms UNIX sistemoms, o programa skirta Linux:

.globl _start
_start:
  movb $4, %al
  xor %ebx, %ebx
  inc %ebx
  movl $hello, %ecx
  xor %edx, %edx
  movb $11, %dl
  int $0x80
  xor %eax, %eax
  inc %eax
  int $0x80
hello:
.ascii "Hello world"


ARM asembleris, Linux

Čia štai jums ARM procesorių asembleris, kuris kažkokiam Linux skirtas. Tai vat taip čia gaunasi:

.global _start
_start:
  MOV R7, #4
  MOV R0, #1
  MOV R2, #12
  LDR R1, =string
  SWI 0
  MOV R7, #1
  SWI 0
  .data
string:
  .ascii "Hello World\n"