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.
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
Prednosti i nedostaci Prednosti Nedostaci Velika brzina izvršavanja Težak za učenje i korištenje Direktna kontrola nad hardverom Ograničena prenosivost Mala potrošnja memorije Veća mogućnost grešaka Pogodan za sistemsko programiranje Veći vremenski zahtjevi pri razvoju
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)
Kategorija:Programski jezici Kategorija:Niskonivoški programski jezici