Yintoni i-API

yintoni i-API

Las Ama-akhronim e-API uya kube uwabonile ngaphezu kwesihlandlo esinye nakabini xa ufunda amanqaku malunga nesoftware. Kodwa ayinguye wonke umntu owaziyo ukuba yintoni i-API. Kungenxa yoko le nto siyicacisa kweli nqaku. Into yokuqala oyithethayo kukuba zizishunqulelo zoJongano lweNkqubo yokuSebenza, oko kukuthi, ngeSpanish, isiNto seNkqubo yokuSebenza. Kwaye amaxesha amaninzi avelisa ukudideka naphakathi kwabo bazi iinkqubo ezithile.

Umzekelo, iArduino ine-API yayo yenkqubo, enikezela uthotho lwemisebenzi onokuyisebenzisa kwi-IDE yeArduino okanye kwezinye iimeko ukuze ucwangcise umlawuli omncinci ukukuvumela ukuba wenze iiprojekthi zakho. Kodwa ... ungandixelela Umahluko phakathi kwenkqubo yethala leencwadi kunye ne-API? Ngaba kukho umahluko phakathi kwesakhelo kunye ne-API? Ngaba i-API iyafana ne-ABI? Kukho amathandabuzo amaninzi athi mhlawumbi aqhubeke nokudala ukudideka kwaye siza kucacisa ngoku.

Andazi ukuba uyayazi lo nto Iilwimi ezisezantsi, njengesihlanganisi okanye i-ASM, ixhomekeke ngokuthe ngqo kulwakhiwo lwezixhobo, ngelixa amanqanaba aphezulu athatyathwa kwizixhobo zokusebenza ukwenza umsebenzi wenkqubo, kodwa ixhomekeke kwinkqubo yokusebenza (ii-syscalls) okanye kwii-API ezithile, njl. Ke ukuba yonke le nto ayivakali ngathi yeyamaTshayina, masibone ukuba imalunga nantoni ...

Yintoni i-API?

Omnye I-API sisixhobo ekubonelelwa ngaso ngabaphuhlisi ukuze babe nokufumana uthotho lwemisebenzi, inkqutyana kunye neenkqubo okanye iindlela ze-OOP ezinokusetyenziswa kumathala eencwadi akhoyo. Phakathi kwezinto ezinikezelwa yi-API ezivela kwimisebenzi yokwenza ii -apps ezilula, imisebenzi enxulumene ne-AI, kunye nokuveliswa kwemizobo, ukulawulwa kwezixhobo zekhompyuter, njl.

Umzekelo, ndiqinisekile ukuba uyazi ii-API ezinje ngezo zinikezelwa yiLinux kwilayibrari ye-glibc, okanye imizobo enje I-OpenGL kunye neVulkan, okanye ezinye ezinje nge-OpenCL yekhompyuter eyahlukileyo, i-OpenXR yokwenyani kunye nokwenyani okwenyaniweyo, njl. Ezinye iinkqubo zokusebenza kunye nesoftware ikwabandakanya ii-API zazo ukuze ezinye iinkqubo zenze ii-addons, iiplagi okanye iimodyuli zenkqubo leyo, njl.

Umzekelo kunye noArduino

Ukuba unebheji IArduino kwaye uhlala usebenzisa iArduino IDE, okanye nayiphi na enye indawo yophuhliso yeArduino, uya kwazi ukuba xa usenza ikhowudi usebenzisa iindlela ezininzi zoku-odola umphathi wakho ukuba enze uthotho lwezenzo. Umzekelo, i-pinMode () ngumsebenzi oqhelekileyo wokumisela ipini yeArduino, akunjalo?

Xa ubhala ikhowudi (9, INPUT)Umzekelo, ubonakalisa ukuba ipini ye-9 yebhodi yeArduino kufuneka isebenze njengegalelo, oko kukuthi, i-microcontroller iya kulinda ulwazi ukuba ingene kuloo pini ukuyifunda nokwenza isenzo. Kodwa ngaba wakha wazibuza ukuba uwazi njani lo myalelo?

Ewe, iArduino inayo Uphuhliso lwe-API olwenziwe ukuba lufumaneke kuthi. Iilayibrari zomntu wesithathu zinokongezwa kule API njengoko sibonile kwimizekelo emininzi kule bhlog. NjengeSparkFun's yeenzwa ezithile, njl. Ngayo yonke le nto, imisebenzi inokufakwa kwi-IDE yeArduino kwaye iya kuguqulela ikhowudi ngokufanelekileyo ukuyilayisha kwimemori ye-microcontroller ukuze iyenze.

Ukuba awunayo le API, ngekhe wenze ezi nkqubo zeArduino ngendlela elula, kuba kufuneka sizame ukuzenza kwikhowudi yendibano ye-ATMega328P microcontroller, Oko kukuthi, I-ASM yoyilo lwe-AVR. Kwaye oko kunokuba nzima ngakumbi, kuba kuya kufuneka usebenzise ngokuthe ngqo imiyalelo efumaneka kule ISA. Ukuba kunjalo, awuzukuphela ngokwazi ngokwaneleyo repertoire ye-ISA, kodwa nezinye izinto ezinje ngenani lobhaliso, njl. Oko kukuthi, kuya kufuneka ube unolwazi olukumgangatho osezantsi lwezixhobo osebenzela kuzo.

por umzekelo, ikhowudi ye-ASM Into ekufuneka uyenzile ukuze i-LED i-blink kwiluphu iya kuba:

<br data-mce-bogus="1">

.ORG 0x0000
; the next instruction has to be written to
; address 0x0000
rjmp START
; the reset vector: jump to "main"
START:
ldi r16, low(RAMEND) ; set up the stack
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16
ldi r16, 0xFF
; load register 16 with 0xFF (all bits 1)
out DDRB, r16
; write the value in r16 (0xFF) to Data
; Direction Register B
LOOP:
sbi PortB, 5
; switch off the LED
rcall delay_05
cbi PortB, 5
; wait for half a second
; switch it on
rcall delay_05 ; wait for half a secon
rjmp LOOP ; jump to loop
DELAY_05:
; the subroutine:
ldi r16, 31
; load r16 with 31
OUTER_LOOP:
; outer loop label
ldi r24, low(1021) ; load registers r24:r25 with 1021, our new
; init value
ldi r25, high(1021) ; the loop label
DELAY_LOOP:
; "add immediate to word": r24:r25 are
; incremented
adiw r24, 1
; if no overflow ("branch if not equal"), go
; back to "delay_loop"
brne DELAY_LOOP
dec r16
; decrement r16
brne OUTER_LOOP
ret
; and loop if outer loop not finished
; return from subroutine

Ngexesha enkosi kwi-API izibonelelo zizonke, Ukubhala kwinqanaba eliphezulu le khowudi ilinganayo (imfutshane kakhulu kwaye inomdla):

<br data-mce-bogus="1">

int ledPin = 13; 		// LED que se encuentra en el pin 13
   void setup(){ 
   pinMode(ledPin, OUTPUT);	// El p1n 13 será una salida digital 
} 
void loop(){ 
   digitalWrite(ledPin, HIGH);	// Enciende el LED
   delay(1000); 				// Pausa de 1 segundo 
   digitalWrite(ledPin, LOW); 	// Apaga el LED 
   delay(1000);				// Pausa de 1 segundo 

Umahluko nge-ABI

I-API vs Linux ABI

I-ABI ligama elaziwa kancinci, ngu Isinxibelelanisi seBhinary yesicelo, okanye ngesiNgesi isiFundo seBhinary. Kule meko kukunxibelelana phakathi kweemodyuli zenkqubo, ngokubanzi phakathi kwethala leencwadi okanye inkqubo yokusebenza kolwimi kulwakhiwo okulo: SPARC, AMD64, ARM, PPC, RISC-V, njl.

Enkosi kwi-ABI, indlela yokubiza imisebenzi igqityiwe, ifomathi yokubini onokuwuqonda umatshini owumbhalayo okanye inkqubo yeefowuni, indlela yokuphathwa okungafaniyo, indlela edluliswa ngayo idatha, njl.

Umahluko ngeSakhelo

Un sikhokelo okanye isakhelo seseti yezixhobo onakho ukunceda ukuphuhlisa iprojekthi oyinikiweyo. Umsebenzi odumileyo uhlala ubeka imigangatho yokufaka iikhowudi, ubonelela ngezinto eziluncedo, njl. Umzekelo, i-JUnit sisakhelo seJava, okanye iSymfony / ikhekhe le-PHP, njl.

Umahluko nge-SDK kunye ne-NDK

I-SDK sisixhobo soPhuculo lweSoftwareOko kukuthi, ikhithi yophuhliso lwesoftware. Idlula ngaphaya kwesikhokelo okanye i-API. Umzekelo unokuba yi-Android Studio okanye i-iOS xCode, njl. Umzekelo, eyokuqala, ukongeza kwi-Android API uqobo, ikwabandakanya i-IDE okanye imeko yokudityaniswa kophuhliso lwenkqubo kunye nokudibanisa, amathala eencwadi, izixhobo, njl.

Ngakolunye uhlangothi, NDK (Izixhobo zoPhuhliso lwaBantu) kukuncedisana. Umzekelo, i-Android NDK ivumela abaphuhlisi ukuba baphinde basebenzise ikhowudi ye-C / C ++ ngokuyazisa kwizicelo nge-JNI (Java Native Interface) ...

Umahluko kwilayibrari

Umzobo weGlibc iWikipedia

Ekugqibeleni, Ithala leencwadi yingqokelela yekhowudi yemithombo enokuphinda isebenze oko kwenza ubomi bube lula kubadwelisi benkqubo. Umzekelo, ngaphakathi kwithala leencwadi le-C stdio.h kukho umsebenzi wokuprinta ukuprinta isicatshulwa kwiscreen. Ukuze oku kwenzeke, ikhowudi yemvelaphi iyafuneka eyenza inkqubo yokusebenza yenze lo msebenzi. Kodwa ekubeni iyinto ephindaphindwayo esetyenziswa rhoqo, ngokucela nje kwithala leencwadi ukuba usebenzise printf ngaphandle kokubhala yonke ikhowudi ukusuka ekuqaleni. Ngamanye amagama, ngamanye amagama, banokubonwa njengeebhloko zangaphambili.

Ithala leencwadi kunye ne-API zinokudideka ngokulula, enyanisweni, amathala eencwadi asongelwe ngaphakathi kwe-API. Umzekelo glibc...

Ndiyathemba ukuba emva koku unoluvo kucace gca malunga nokuba yintoni i-API, i-ABI, isakhelo, i-SDK kunye nelayibrari, ukongeza ekubeni nakho ukwahlula phakathi kwabo ukusukela ngoku.


Yiba ngowokuqala ukuphawula

Shiya uluvo lwakho

Idilesi yakho ye email aziyi kupapashwa. ezidingekayo ziphawulwe *

*

*

  1. Uxanduva lwedatha: UMiguel Ángel Gatón
  2. Injongo yedatha: Ulawulo lwe-SPAM, ulawulo lwezimvo.
  3. Umthetho: Imvume yakho
  4. Unxibelelwano lwedatha: Idatha ayizukuhanjiswa kubantu besithathu ngaphandle koxanduva lomthetho.
  5. Ukugcinwa kweenkcukacha
  6. Amalungelo: Ngalo naliphi na ixesha unganciphisa, uphinde uphinde ucime ulwazi lwakho.