Programski jezik niskog nivoa
From Wikipedia, the free encyclopedia
Remove ads
Programski jezik niskog nivoa je vrsta programskog jezika koji omogućava direktnu komunikaciju s hardverom računara, uz minimalnu apstrakciju od arhitekture sistema. Ovi jezici su ključni za razvoj operativnih sistema, ugrađenih sistema i upravljačkih programa (drajvera).
Uvod
Jezici niskog nivoa omogućavaju direktan pristup resursima računara, uključujući memoriju, registre i I/O uređaje. Zbog toga se koriste u situacijama gdje su brzina i efikasnost ključni faktori, poput razvoja operativnih sistema i ugradbenih rješenja.
Osnovne karakteristike
- Bliska povezanost s hardverom – Programi direktno manipulišu memorijom i registarskim operacijama, bez dodatnih slojeva apstrakcije.
- Minimalna apstrakcija – Programerima je omogućeno nisko-nivo upravljanje resursima, što zahtijeva detaljno razumijevanje arhitekture sistema.
- Efikasnost i brzina – Kod se prevodi direktno u mašinski kod, čime se izbjegavaju dodatni slojevi interpretacije.
- Ograničena prenosivost – Programi su često prilagođeni specifičnim arhitekturama procesora.
Remove ads
Vrste programskih jezika niskog nivoa
Mašinski jezik
Mašinski jezik predstavlja niz binarnih instrukcija koje procesor može direktno izvršiti. Svaka instrukcija se zapisuje u binarnom formatu, što ga čini teško čitljivim za programere.
10110000 01100001
Ova instrukcija može značiti "učitaj vrijednost 97 u registar".
Asemblerski jezik
Asemblerski jezik koristi mnemonike umjesto binarnog koda, omogućavajući programerima čitljiviji način pisanja programa. Svaka asembler instrukcija odgovara jednoj mašinskoj instrukciji.
MOV AX, 5
ADD AX, 3
Ovaj kod znači: učitaj vrijednost 5 u registar AX, a zatim dodaj 3.
C jezik (delimično)
Iako C (programski jezik) nije klasičan jezik niskog nivoa, omogućava direktan rad s memorijom pomoću pokazivača i inline asemblera.
#include <stdio.h>
int main() {
int x = 5;
int *ptr = &x;
printf("Vrijednost x: %d\n", *ptr);
return 0;
}
Napredne tehnike programiranja niskog nivoa
Rad s registrima
Korištenje registara omogućava optimizaciju performansi.
MOV AX, 4
MOV BX, AX
ADD BX, 2
Direktan pristup hardveru
U jezicima niskog nivoa moguće je direktno upravljati I/O uređajima.
MOV AH, 0 ; Servis za čitanje karaktera
INT 16h ; Interrupt za tastaturu
Interrupti i sistemske operacije
Interrupti omogućavaju procesoru da reaguje na spoljne i unutrašnje događaje.
MOV AH, 0x0E
MOV AL, 'A'
INT 10h
Razlike između x86 i ARM arhitekture
Dva najčešća seta instrukcija u niskonivoznom programiranju su x86 (CISC) i ARM (RISC).
x86 Assembly:
MOV AX, 5
ADD AX, 3
ARM Assembly:
MOV R0, #5
ADD R0, R0, #3
Pisanje bootloadera
Bootloader je prvi program koji se izvršava prilikom pokretanja računara. Piše se u asembleru zbog potrebe za potpunom kontrolom nad hardverom.
BITS 16
ORG 0x7C00
MOV SI, msg
CALL print
JMP $
print:
MOV AH, 0x0E
next_char:
LODSB
CMP AL, 0
JE done
INT 0x10
JMP next_char
done:
RET
msg: DB 'Hello, World!', 0
TIMES 510 - ($ - $$) DB 0
DW 0xAA55 ; Boot signature
Remove ads
Prednosti i nedostaci
Primjena
Jezici niskog nivoa koriste se u:
- Razvoju operativnih sistema (npr. Unix, Linux, Windows).
- Razvoju drajvera za hardver.
- Programiranju ugrađenih sistema i IoT uređaja.
- Razvoju kompajlera i interpretera.
- Sigurnosnim sistemima koji zahtijevaju niskonivoznu optimizaciju.
Zaključak
Programski jezici niskog nivoa omogućavaju visoku kontrolu nad hardverom, ali su složeniji za programiranje. Njihova primjena je ključna u oblastima gdje su brzina i optimizacija presudni faktori, kao što su operativni sistemi, drajveri i ugrađeni sistemi.
Literatura
- Tanenbaum, A. S. (2016). Structured Computer Organization. Pearson.
- Patterson, D. A., & Hennessy, J. L. (2017). Computer Organization and Design. Morgan Kaufmann.
- Stallings, W. (2019). Computer Organization and Architecture. Pearson.
Vanjski linkovi
- [Low-Level Language - Computer Hope](https://www.computerhope.com/jargon/l/lowlangu.htm)
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads