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 ...
Index
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-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
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