અનુકરણ લિનસ ટોરવાલ્ડ્સ: શરૂઆતથી તમારી પોતાની operatingપરેટિંગ સિસ્ટમ બનાવો (VI)

ઠીક છે, થોડી કૌંસ પછી અમે અમારા ટ્યુટોરિયલ્સની શ્રેણી ચાલુ રાખીએ છીએ. જો આપણે પાછલા કોડ પર પાછા જઈએ તો આપણી પાસે શૂન્ય દ્વારા ડિવિઝનનો ISR હોવો આવશ્યક છે. હવે આપણે બાકીના આઇએસઆર ભરવા જોઈએ, જેના માટે અમે પોસ્ટ કર્યું હતું (પ્રથમ 32) ઠીક છે હવે આપણે પ્રોગ્રામિંગ વિક્ષેપો ચાલુ રાખવા જઈ રહ્યા છીએ, અમે આઈઆરક્યૂ કરવા જઈ રહ્યા છીએ જેને પણ ઓળખાય છે વિનંતીઓ અવરોધે છે. આ આઇઆરક્યુ હાર્ડવેર ડિવાઇસેસ દ્વારા બનાવવામાં આવે છે જેમ કે કીબોર્ડ્સ, ઉંદર, પ્રિન્ટર્સ, વગેરે. શરૂઆતમાં પ્રથમ 8 IRQs આપમેળે IDT ની સ્થિતિ 8 થી 15 માં મેપ કરવામાં આવે છે. હવે અપવાદો માટે આપણે પહેલા 32 નો ઉપયોગ કર્યો છે, તેથી હવે આપણે તેને ફરીથી બનાવવો પડશે. અમે 32 થી 45 સુધી આઈઆરક્યુ મૂકીશું. આ માટે આપણે પહેલા આઈઆરક્યૂ ફરીથી બનાવવું જોઈએ:

void ND::IRQ::Remap(int pic1, int pic2)
{
#define PIC1 0x20
#define PIC2 0xA0
#define ICW1 0x11
#define ICW4 0x01
/* send ICW1 */
ND::Ports::OutputB(PIC1, ICW1);
ND::Ports::OutputB(PIC2, ICW1);
/* send ICW2 */
ND::Ports::OutputB(PIC1 + 1, pic1); /* remap */
ND::Ports::OutputB(PIC2 + 1, pic2); /* pics */
/* send ICW3 */
ND::Ports::OutputB(PIC1 + 1, 4); /* IRQ2 -> connection to slave */
ND::Ports::OutputB(PIC2 + 1, 2);
/* send ICW4 */
ND::Ports::OutputB(PIC1 + 1, ICW4);
ND::Ports::OutputB(PIC2 + 1, ICW4);
/* disable all IRQs */
ND::Ports::OutputB(PIC1 + 1, 0xFF);
}

હવે અમે આઇઆરક્યુ સ્થાપિત કરવા માટે એક કાર્ય બનાવીએ છીએ:

void ND::IRQ::Install()
{
ND::Screen::SetColor(ND_SIDE_FOREGROUND,ND_COLOR_BLACK);
ND::Screen::PutString("\nInstalling IRQ...");
ND::IRQ::Remap(0x20,0x28);
ND::IDT::SetGate(32,(unsigned)ND::IRQ::IRQ1,0x08,0x8E);
ND::IDT::SetGate(33,(unsigned)ND::IRQ::IRQ2,0x08,0x8E);
ND::IDT::SetGate(34,(unsigned)ND::IRQ::IRQ3,0x08,0x8E);
ND::IDT::SetGate(35,(unsigned)ND::IRQ::IRQ4,0x08,0x8E);
ND::IDT::SetGate(36,(unsigned)ND::IRQ::IRQ5,0x08,0x8E);
ND::IDT::SetGate(37,(unsigned)ND::IRQ::IRQ6,0x08,0x8E);
ND::IDT::SetGate(38,(unsigned)ND::IRQ::IRQ7,0x08,0x8E);
ND::IDT::SetGate(39,(unsigned)ND::IRQ::IRQ8,0x08,0x8E);
ND::IDT::SetGate(40,(unsigned)ND::IRQ::IRQ9,0x08,0x8E);
ND::IDT::SetGate(41,(unsigned)ND::IRQ::IRQ10,0x08,0x8E);
ND::IDT::SetGate(42,(unsigned)ND::IRQ::IRQ11,0x08,0x8E);
ND::IDT::SetGate(43,(unsigned)ND::IRQ::IRQ12,0x08,0x8E);
ND::IDT::SetGate(44,(unsigned)ND::IRQ::IRQ13,0x08,0x8E);
ND::IDT::SetGate(45,(unsigned)ND::IRQ::IRQ14,0x08,0x8E);
ND::IDT::SetGate(46,(unsigned)ND::IRQ::IRQ15,0x08,0x8E);
ND::IDT::SetGate(47,(unsigned)ND::IRQ::IRQ16,0x08,0x8E);
ND::Screen::SetColor(ND_SIDE_FOREGROUND,ND_COLOR_GREEN);
ND::Screen::PutString("done");
asm volatile("sti");
}

Asm ની સજા એસટી અમે IRQs ને સક્રિય કરીએ છીએ. ઠીક છે હવે આપણે ISR જેવી જ કંઈક સાથે જઈએ છીએ. મૂળભૂત IRQ ના કાર્યો:

void ND::IRQ::IRQ1()
{
asm volatile(
"cli \n"
"pushl 0\n"
"pushl 32\n"
"jmp ND_IRQ_Common"
);
}

એક સામાન્ય ભાગ (ISR જેવો જ):

extern "C"
void ND_IRQ_Common()
{
asm volatile(
"pusha \n"
"push %ds\n"
"push %es\n"
"push %fs\n"
"push %gs\n"
"movw $0x10, %ax \n"
"movw %ax, %ds \n"
"movw %ax, %es \n"
"movw %ax, %fs \n"
"movw %ax, %gs \n"
"movl %esp, %eax \n"
"push %eax \n"
"movl $ND_IRQ_Handler, %eax \n"
"call *%eax \n"
"popl %eax \n"
"popl %ds \n"
"popl %es \n"
"popl %fs \n"
"popl %gs \n"
"popa \n"
"addl 8, %esp \n"
"iret \n"
);
}

અને મૂળભૂત સંભાળનાર:

extern "C"
void ND_IRQ_Handler(struct regs* r)
{
void (*handler)(struct regs *r);
if(r->int_no >= 40)
{
ND::Ports::OutputB(0xA0,0x20);
}
ND::Ports::OutputB(0x20,0x20);
}

આ સાથે આપણે પહેલાથી જ આઈઆરક્યુ સક્રિય કરવું જોઈએ જો તેઓ હજી પણ કંઇ કરતા ન હોય તો પણ. હવે પછીનાં અધ્યાયમાં આપણે જોઈશું કે ઘડિયાળ અથવા કીબોર્ડ જેવા આ આઈઆરક્યુમાંથી ડેટા કેવી રીતે મેળવવો.

NextDivel-IRQ


અને આ સાથે આજની પોસ્ટ સમાપ્ત થાય છે. જેમ તમે હવે જોઈ શકો છો હું અન્ય મુદ્દાઓને કારણે નિયમિતપણે ઓછું લખું છું. તેમ છતાં મારી પાસે વધુ સંપૂર્ણ operatingપરેટિંગ સિસ્ટમ ન થાય ત્યાં સુધી હું ચાલુ રાખીશ


22 ટિપ્પણીઓ, તમારી છોડી દો

તમારી ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. આવશ્યક ક્ષેત્રો સાથે ચિહ્નિત થયેલ છે *

*

*

  1. ડેટા માટે જવાબદાર: મિગ્યુએલ gelંજેલ ગેટóન
  2. ડેટાનો હેતુ: નિયંત્રણ સ્પામ, ટિપ્પણી સંચાલન.
  3. કાયદો: તમારી સંમતિ
  4. ડેટાની વાતચીત: કાયદાકીય જવાબદારી સિવાય ડેટા તૃતીય પક્ષને આપવામાં આવશે નહીં.
  5. ડેટા સ્ટોરેજ: cસેન્ટસ નેટવર્ક્સ (ઇયુ) દ્વારા હોસ્ટ કરેલો ડેટાબેઝ
  6. અધિકાર: કોઈપણ સમયે તમે તમારી માહિતીને મર્યાદિત, પુન recoverપ્રાપ્ત અને કા deleteી શકો છો.

  1.   aitor_cz જણાવ્યું હતું કે

    આભાર એડ્રિયન, જલદી મારી પાસે થોડો સમય હશે (હવે હું એકદમ વ્યસ્ત છું, thingsપરેટિંગ સિસ્ટમ સાથેની અન્ય બાબતોમાં પણ) હું ટ્યુટોરિયલ સ્ટેપ બાય સ્ટેપનું પરીક્ષણ કરવાનું શરૂ કરીશ.

  2.   રૂબી જણાવ્યું હતું કે

    ધન્યતા માટે ખૂબ ખૂબ આભાર.

  3.   સાસુકે જણાવ્યું હતું કે

    એક પ્રશ્ન હું આ પ્રોગ્રામિંગ ભાષાઓના આધારે પ્રોજેક્ટ કરી રહ્યો છું
    * એચટીએમએલ 5
    * સીએસએસ 3
    * જાવા
    મારો પ્રશ્ન છે કે હું ઇચ્છું છું કે આ પ્રોજેક્ટ એક્ઝેક્યુટેબલ થાય, જેથી વપરાશકર્તાઓ તેનો ઉપયોગ લિનક્સ અને વિંડોઝ જેવી operatingપરેટિંગ સિસ્ટમમાં કરે, તમે મને કહી શકો કે હું તે કેવી રીતે કરું

    1.    એડ્રિયનઆરોયોસ્ટ્રીટ જણાવ્યું હતું કે

      તેનો આ સાથે કંઈ લેવાદેવા નથી પરંતુ હું તમને કોઈપણ રીતે જવાબ આપું છું. હું માનું છું કે તે HTML5, CSS3 અને જાવાસ્ક્રિપ્ટ જાવા નહીં, કારણ કે HTML5 અને જાવા ખરાબ રીતે ચાલે છે. એચટીએમએલ 5 સાથે તમે ઇન્ટરનેટથી areક્સેસ થાય તે પહેલાં વેબસાઇટ્સ બનાવી શકો છો. જો તમે તેને સ્થાનિક બનાવવા માંગો છો, તો તમે તેને ફાયરફોક્સ ઓએસ અને ક્રોમ ઓએસ એપ્લિકેશન તરીકે પેકેજ કરી શકો છો. જો તમે ઇચ્છો તો તે છે કે દરેક operatingપરેટિંગ સિસ્ટમમાં XUL રનર પર એક્ઝેક્યુટેબલ લેવામાં આવે છે જે GECO એન્જિન સાથે XUL ને ચલાવવાનું એક સાધન છે (અને તેથી તત્વની અંદર HTML5).

    2.    સોદ પેરેઝ જણાવ્યું હતું કે

      જાવા ફ્રેમ અથવા પેનલ એક ખૂબ જ સારો વિકલ્પ છે મેં જાવા ફ્રેમ વર્ગોને વેબ બ્રાઉઝર તરીકે ઉપયોગ કરીને વિંડોમાં કેટલાક એક્ઝેક્યુટેબલ એપ્લિકેશંસ બનાવ્યાં છે પરંતુ કોઈ પણ પૃષ્ઠ માટે તેનો ઉપયોગ કરવાને બદલે હું તેને કોડમાં સીધો માર્ગ આપું છું અને પીએચપી સાથે જાવા વાક્યોને એક્ઝેક્યુટ કરું છું. .જર દ્વારા જે સ્ટીલની સંભાળ રાખે છે. તેમ છતાં હું એચટીએમએલ 5, સીએસએસ 3 અને જાવાસ્ક્રિપ્ટનો ઉપયોગ કરવાની ભલામણ કરીશ કારણ કે એડ્રિયન જાવા કહે છે, તે એચટીએમએલ 5 સાથે ઘાતક છે અને તે મને ખૂબ માથાનો દુખાવો લાવશે

  4.   લર્બન જણાવ્યું હતું કે

    તમારી પોતાની પ્રોગ્રામિંગ ભાષા કેવી રીતે બનાવવી તે વિશેનું ટ્યુટોરિયલ સરસ રહેશે

  5.   ઇવાન જણાવ્યું હતું કે

    Goodપરેટિંગ સિસ્ટમ કેવી રીતે બનાવવી તે વિશેના લેખોની આ શ્રેણી ખૂબ જ સારી છે, તમે ઘણી વસ્તુઓ શીખી શકો છો. હું આગલી એન્ટ્રીની રાહ જોઈ રહ્યો છું, મારે પહેલેથી ઓએસમાં કીબોર્ડ હોવું છે. હું ગિટ કોડ સાથે ગડબડ કરું છું, અને હું 0x60 અને 0x64 બંદર સાથે કામ કરવા માટે સક્ષમ નથી. તેમ છતાં મેં વિચાર્યું કે કીબોર્ડ માટે ત્યાં કોઈ વિક્ષેપ છે જે તમને દબાયેલી કી આપે છે.

    1.    એડ્રિયનઆરોયોસ્ટ્રીટ જણાવ્યું હતું કે

      તમે ખરેખર વિક્ષેપ વિના કીબોર્ડ ઇનપુટ મેળવી શકો છો, પરંતુ તમારે એનડી :: પોર્ટ્સ :: ઇનપુટબી 0x60 પોર્ટ પર વાંચવું આવશ્યક છે. જો કે આ કરવાની આદર્શ રીત એ આઈઆરક્યુ ઇન્ટ્રપ્ટ્સ સાથે છે. હું હાલમાં તે કરવાનો પ્રયાસ કરી રહ્યો છું અને તેના કારણે ચાલુ થવામાં થોડો સમય લાગશે.

      1.    કાર્લોસોર્ટા જણાવ્યું હતું કે

        હાય એડ્રિયન, હું કોડ ચકાસી રહ્યો છું અને હું તેનાથી પ્રભાવિત છું કે તે શું કરે છે અને તે મને કેટલીક વસ્તુઓ સમજવામાં કેટલી સારી રીતે મદદ કરી છે.

        તે કેવી રીતે કાર્ય કરે છે તેના વિશે મારી પાસે થોડા નાના પ્રશ્નો છે અને તમારી જી.આઈ.ટી.માંથી મને મળેલ સ્રોત છે:

        1.- IRQs ના ભાગમાં, તમે ઉલ્લેખ કર્યો છે કે IDT ના 0 થી 32 સુધીના સ્થાનો અપવાદો માટે અને 32 (0x20) થી 45 (0x2D) સુધી IRQs માટે વપરાય છે, પરંતુ IRQs કુલ 16 છે, રિમેપિંગ 0x20 થી 0x30 નહીં હોય?

        2.- આઇઆરક્યુ ભાગમાં, નોંધ લો કે સેટગેટ્સ આઇડીટી વિભાગમાં મોકલવામાં આવ્યા હતા; જ્યારે તમે તેમને અલગ કરો છો, તો નોંધ લો કે તે હવે 0 દ્વારા ભાગનું અપવાદ ઉત્પન્ન કરશે નહીં, તેથી કરવામાં આવેલા દરેક સંશોધન માટે IDT ફ્લશ () ઉમેરવું જરૂરી છે. ટાઈમર સેટ કરતી વખતે આઈડીટી કેમ બદલાય છે અને 0 વચ્ચેનું વિભાજન કાર્ય કરવાનું બંધ કરે છે?

        -. હું કોડને કેટલાક પ્રિન્ટિંગ સાથે શોધી કા whatવાનો પ્રયત્ન કરી રહ્યો હતો કે તે શું ચલાવે છે તેના સંકેત તરીકે (જેથી પગલું દ્વારા ડિબગીંગ પગલું ન ભરાય) અને મને સમજાયું કે કોઈ આઈઆરક્યુ ચાલતું નથી, શું મારે બીજું કંઈક નોંધવું પડશે? IRQ ઇન્ટ્રપ્ટ્સ જનરેટ કરવા માટે?

        1.    કાર્લોસોર્ટા જણાવ્યું હતું કે

          હું એ જાણવાનું ભૂલી ગયો કે મને આ લિંક્સ માહિતી સાથે મળી:
          http://arstechnica.com/civis/viewtopic.php?f=20&t=899001
          http://www.superfrink.net/athenaeum/OS-FAQ/os-faq-pics.html
          http://orga2.exp.dc.uba.ar/data/downloads/clasespracticas/interrupciones2_clase_17.pdf
          http://www.intel-assembler.it/PORTALE/4/231468_8259A_PIC.pdf

          દેખીતી રીતે આઇઆરક્યુ સંભાળવા માટે, પીઆઈસી, એપીઆઇસી, આઇઓએપીઆઈસી જો કયા પ્રકારનાં હેન્ડલરનો ઉપયોગ થાય છે તે ધ્યાનમાં લેવું જરૂરી છે. . .etc. શું આઈઆરક્યુનું ગતિશીલ હેન્ડલિંગ કરવાનો કોઈ રસ્તો છે અથવા તમારે નસીબ અજમાવવાની જરૂર છે?

  6.   કાર્લોસોર્ટા જણાવ્યું હતું કે

    ગુડ બપોરે એડ્રિયન.

    મેં જોયું કે મને આઈઆરક્યુમાં સમસ્યા છે અને તેથી જ કોડને આગળ વધારી શકાતો નથી, મેં પ્રોજેક્ટની એક ક tookપિ લીધી અને મેં તેનું વિશ્લેષણ કરવાનું શરૂ કર્યું; વિક્ષેપો બનાવવાના ક્ષણે સ્ટ્રક્ટ રેગના રેગ રેકોર્ડ્સને છાપવા માટે મેં સ્ક્રીન પ્રિન્ટિંગમાં ફંક્શન ઉમેર્યું; મને ઘણી વસ્તુઓ મળી, તેમાંથી એક કે રજિસ્ટ્રી ચાલે છે અને મને હજી કેમ તે મળી શક્યું નથી; પરીક્ષણ માટે કીબોર્ડ વિક્ષેપ માટે ટાઈમર વિક્ષેપ બદલો અને તે જે કરે છે તે કરે છે પરંતુ મને સમસ્યા મળી શકતી નથી, તમે મને મદદ કરી અને આ સારી પોસ્ટ સાથે ચાલુ રાખી શકો? 😀

    હું લિંક છોડું છું (તેમાં કેટલાક ફેરફારો છે કારણ કે હું મેજિઆનો ઉપયોગ કરું છું અને હું ગ્રુબ 2 નો ઉપયોગ કરું છું, હું તેની ચકાસણી માટે વર્ચ્યુઅલબોક્સનો ઉપયોગ કરી રહ્યો છું)
    https://www.mediafire.com/?93psrgaoozatse8

    તમારા સચેત પ્રતિસાદની રાહ જોવી છું અને જો તમને કોઈ પ્રશ્નો હોય અથવા કંઈકની જરૂર હોય તો હું મદદ કરવા માંગું છું 🙂

    1.    કાર્લોસોર્ટા જણાવ્યું હતું કે

      હું એ કહેવાનું ભૂલી ગયો કે મેં કર્નલપનિકને પણ ચકાસી લીધું કારણ કે આઇએસઆર કામ કરતું નથી અને મને સ્ટેકની ટોચ પર સમાન મૂલ્ય ફિલ્ટર કરવામાં આવી રહ્યું છે અને મને ખબર નથી કે તે મારું કમ્પાઇલર છે કે કોઈ સમસ્યા છે, હું મેજિયા 4.8.2 સાથે જીસીસી 4 નો ઉપયોગ કરો

    2.    એડ્રિયનઆરોયોસ્ટ્રીટ જણાવ્યું હતું કે

      મને ખરેખર ગમે છે કે તમે મને પ્રોજેક્ટમાં મદદ કરો છો. હું ખરેખર ટાઇમરમાં અટવાઈ ગયો છું અને તે કેમ કામ કરતું નથી તે મને સમજાતું નથી. મેં ઘણી બધી બાબતોમાં ફેરફાર કરવાનાં પરીક્ષણો કર્યા અને તે ફળ્યા નહીં. હાલમાં હું કોડને સંપાદિત કરી શકતો નથી (હું વેકેશન પર છુ) પરંતુ હું જલ્દીથી તેનો સારો દેખાવ લઈશ. હું તમને આ સમસ્યા વિશેની માહિતી સાથે એક લિંક આપું છું જે કંઈક સામાન્ય લાગે છે: http://wiki.osdev.org/I_Cant_Get_Interrupts_Working

      અપવાદો વિશે, મને લાગે છે કે મને યાદ છે કે તમારે તેમને સક્રિય કરવા માટે ASM માં "સ્ટિટ" પર ક toલ કરવો પડશે, જોકે તે સ્પષ્ટ છે કે ક્યાંક કંઇક ખોટું છે.

      1.    કાર્લોસોર્ટા જણાવ્યું હતું કે

        તમારા જવાબ માટે આભાર અને હા, ખરેખર. વિક્ષેપો નિષ્ફળ થઈ રહ્યા હતા પરંતુ તે સ્ટેકમાં કોડ દાખલ કરવામાં સમસ્યા હતી અને કાસ્ટિંગની સમસ્યા, હું લિંક ચકાસીશ અને હું પરીક્ષણો કરીશ. જો હું તેને હલ કરું તો હું તમને જણાવીશ અને જો નહીં તો હું તમને પ્રગતિ વિશે જણાવીશ. સુખી રજાઓ 🙂

      2.    કાર્લોસોર્ટા જણાવ્યું હતું કે

        એસેમ્બલ કોડ જોવાની કોઈ રીત રહેશે નહીં? શું કંઈક વિચિત્ર થાય છે અને મને શું મળી શકતું નથી? આ સ્ક્રીનને જુઓ (મેં લિંકને અંતે મૂકી દીધી છે), તે આઈઆરક્યુ 2 ફંક્શન (કીબોર્ડ) થી કંઇક વિચિત્ર છે ) તે સ્ટેકના મૂલ્યમાં 0 અને 0x20 માં પ્રવેશ કરે છે (32, તેથી તેને પરીક્ષણ માટે ફિટ કરો) પછી પુશલ (32-બીટ જીપીઆર રજિસ્ટર) ત્યારબાદ સેગમેન્ટેશન રજિસ્ટર અને પછી સ્ટેકની ટોચ અને પછી આઇઆરક્યૂ હેન્ડલરને ક callલ કરો. મેં દરેક સ્ટેક જોવાનું શરૂ કર્યું અને દેખીતી રીતે તે ક્રમમાં છે પરંતુ જો તમે વીએમનું આઉટપુટ જોઈ શકો છો તમે જોઈ શકો છો કે તે એક વધુ તત્વને સ્ટેક કરે છે, મને ક્યાંથી મળી શકતું નથી, મને ફક્ત ખબર છે કે તે 0x10 છે અને માળખું ક્રમમાં બહાર છે. આ રેકોર્ડ સ્ટ્રક્ચર છે.

        સ્ટ્રક્ટ રેગ {
        uint32_t જીએસ, એફએસ, એસએસ, ડીએસ; / * સેકન્ડ્સને છેલ્લા * /
        uint32_t એડી, એસી, ઇબીપી, ઇએસપી, ઇબીએક્સ, ઇડીએક્સ, ઇએક્સ, ઇએક્સ; / * 'પુશાલ' દ્વારા દબાણ * * /
        uint32_t પૂર્ણાંક_નો નહીં, ભૂલ _ કોડ; /* ભૂલ કોડ */
        uint32_t eip, cs, eflags, useresp, ss; / * વિરામ પર સ્ટackક્ડ * /
        };

        તે મને એક કેન આપે છે જે ટોચ પર એક વધુ તત્વ મૂકે છે અને હું શોધી શકતો નથી કે જ્યાં તે સ્ટ isક્ડ છે જો દેખીતી રીતે બધું સ્ટackક્ડ છે જેવું હોવું જોઈએ. તે શું હોઈ શકે છે તમને કોઈ ખ્યાલ છે?

        http://www.subeimagenes.com/img/sin-titulo-1036729.jpg

  7.   કાર્લોસોર્ટા જણાવ્યું હતું કે

    કામ કરવા માટે કીબોર્ડ વિક્ષેપ મેળવો પરંતુ ટાઈમર વિક્ષેપ નહીં; ભૂલ જે રીતે સંકલન કરવામાં આવી હતી તે રીતે હતી, મેં અંતિમ seeબ્જેક્ટ જોવા માટે objડજેડમ્પનો ઉપયોગ કર્યો અને તે બહાર આવ્યું કે દરેક કાર્ય જે "એસએમ વોલેટાઇલ" નો ઉપયોગ કરીને પણ દાખલ કરવામાં આવ્યું હતું તે પણ પુશલ ઇબીપી, મોવ ઇબીપી, ઇએસપી સાથે હતું. પછી પ્રારંભિક સ્ટેકને પુન restoreસ્થાપિત કરવા માટે તેમાં એક પlપલ ઇબીપી ઉમેરો અને તે નિષ્ફળ થયા વિના દલીલો પસાર કરશે. અહીં હું તે લોકો માટે કોડ જોડું છું કે જેઓ તેને તપાસવા માંગે છે અને જો તમે શોધી કા canશો કે ટાઈમર દ્વારા વિક્ષેપ કેમ નથી પેદા થયો, તો હું તેને જાણવાનું પસંદ કરીશ અને હું એક લિંક જોડું છું જ્યાં તેઓ મલ્ટિટાસ્કિંગ વિશે વાત કરે છે. http://www.jamesmolloy.co.uk/tutorial_html/9.-Multitasking.html
    નેક્સ્ટ ડિવેલ
    https://www.mediafire.com/?kmo83dxyzc7c3cz

    1.    એડ્રિયનઆરોયોસ્ટ્રીટ જણાવ્યું હતું કે

      હુ સમજી ગયો. તે બીજી સાઇટમાં એક ભૂલ હતી જેણે ટાઈમર પીઆઈસીના સક્રિયકરણને અસર કરી, ખાસ કરીને આઈઆરક્યુ રિમેપમાં ત્યાં બે લાઇનો હતી જેને હું સુધારવી પડી હતી. હું તે વેબસાઇટ પર કોઈ કોડ જોઈ શકું છું તે હકીકત માટે આભાર કે તે સમયે કંઈક અલગ હતું અને ક્લિક કરો! પરિવર્તન આની રેખાઓ સાથે હતું:
      એનડી :: બંદરો :: આઉટપુટબી (પીઆઈસી 1 + 1, 0 એક્સએફએફ);
      એનડી :: બંદરો :: આઉટપુટબી (પીઆઈસી 2 + 1, 0 એક્સએફએફ);

      તમારે 0xFF (હું કહીશ કે તે અક્ષમ કરે છે સૂચવે છે) નું મૂલ્ય 0x00 માં બદલવું પડ્યું (હું કહીશ કે તે સક્ષમ છે.) જોકે હું ખરેખર ખાતરી નથી, પરંતુ તે કાર્ય કરે છે. મેં ગિટહબ પર કોડ અપડેટ કર્યો છે. આ સમસ્યાને કારણે મને થોડો ત્યજી દેવામાં આવેલા પ્રોજેક્ટમાં મને મદદ કરવા બદલ ખૂબ ખૂબ આભાર. એચ

      1.    કાર્લોસોર્ટા જણાવ્યું હતું કે

        તમારું સ્વાગત છે, હું આ વિષય પરના આગામી અપડેટની રાહ જોઉં છું અને તમે મારા માટે કંઈપણ માટે વિશ્વાસ કરી શકો છો Y (વાય)

      2.    કાર્લોસોર્ટા જણાવ્યું હતું કે

        કીબોર્ડ શબ્દમાળા કેપ્ચર નિયમિત બદલો; કારણ કે તે વાંચવામાં આવે છે જ્યારે કી પ્રકાશિત થાય છે અને તે બફરમાં 0 માઉન્ટ કરે છે, જે વાંચનમાં મુશ્કેલી આપે છે અને અંતે '' n 'તેને બદલો »જેથી યોગ્ય છાપકામ કામ કરે

  8.   સોદ પેરેઝ જણાવ્યું હતું કે

    નમસ્તે, મેં તમારી આખી પોસ્ટ વાંચી છે, જોકે વ્યવહારમાં તે 2 પોસ્ટ કરતા વધારે નથી, તે ખરેખર ખૂબ સારી છે, બધુ બચાવી, પરંતુ મને તે સમજવા માટે ખરેખર સી ++ અને પોક્સિક્સનો અભ્યાસ કરવો પડશે કારણ કે હું "સી" વિશે જાણું છું (હું તે પ્રોગ્રામિંગ ભાષાથી આકર્ષિત છું) પરંતુ સી ++ સી ઓઓ હોવા છતાં મેં તેના પર ખરેખર ક્યારેય કામ કર્યું નથી, ગૂગલમાં મને કેટલાક ટ્યુટોરિયલ્સ વાંચો અને પછી હું આ ખૂબ જ રસપ્રદ અને એક પ્રશ્ન પાછો ફરીશ, શું વિન્ડો સ્ટાર્ટઅપ લિન્ક્સ જેવું જ છે ?

    1.    એડ્રિયનઆરોયોસ્ટ્રીટ જણાવ્યું હતું કે

      વિંડોઝમાં બૂટિંગ એ અર્થમાં સમાન છે કે x86 પ્રોસેસરવાળી સિસ્ટમને બુટ કરવાની આ રીત છે અને તેના પર બાંધવામાં આવેલી operatingપરેટિંગ સિસ્ટમનો થોડો પ્રભાવ છે. આપણે ખરેખર પોતાને બૂટ કરી રહ્યાં નથી, તે આપણા માટે ગ્રીબ શરૂ કરી રહ્યું છે. લિનક્સ બુટ કરવા માટે બનાવાયેલ GRUB, વિન્ડોઝને બુટ કરી શકે છે અને આ કિસ્સામાં નેક્સ્ટડેવીલ.

      1.    ભીનું જણાવ્યું હતું કે

        બરાબર આભાર એનો અર્થ એ છે કે મારે જે કરવાનું છે તે શક્ય છે હું પહેલેથી જ c ++ નો અભ્યાસ કરી રહ્યો છું અને કેટલીક એપ્લિકેશનો બનાવી રહ્યો છું અને તમારી સિસ્ટમને પેનડ્રાઇવ પર ઇન્સ્ટોલ કરી રહ્યો છું અને હું તેનો વધુ વિગતવાર અભ્યાસ કરું છું તે ખૂબ જ સારી પોસ્ટ છે