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