ஸ்டேக் என்பது நேரியல் தரவு கட்டமைப்பைத் தவிர வேறொன்றுமில்லை, அங்கு செருகும் நீக்குதலும் ஒரே முனையில் மட்டுமே நடைபெறும். செருகும் செயல்பாட்டில் புஷ் எனப்படும் சிறப்பு பெயர் உள்ளது மற்றும் நீக்குதல் செயல்பாட்டில் POP எனப்படும் சிறப்பு பெயரும் உள்ளது. புஷ் மற்றும் பிஓபி இரண்டு அடிப்படை செயல்பாடுகள் ஆகும், அவை ஒரு குறிப்பிட்ட அடுக்கில் மட்டுமே மேற்கொள்ளப்பட முடியும். இது நினைவக இருப்பிடங்களின் குழு மற்றும் நினைவக இருப்பிடங்கள் வாசிப்பு நினைவகம் அல்லது நினைவகத்தை எழுதுவது தொடர்பானவை. நிரலின் செயல்பாட்டின் போது பைனரி தகவல்களை சேமிக்க இது பயன்படுகிறது, நாங்கள் எந்தவொரு நிரலையும் செயல்படுத்தும்போது, அந்த நிரலின் உள்ளடக்கங்கள் அடுக்கில் சேமிக்கப்படும். அது பின்வருமாறு லாஸ்ட் இன் ஃபர்ஸ்ட் அவுட் (LIFO) மற்றும் இது தரவைச் சேமிப்பதற்கும் மீட்டெடுப்பதற்கும் மட்டுமே பயன்படுத்தப்படுகிறது, ஆனால் தரவைச் சேமிக்கப் பயன்படாது. ஸ்டேக் / ஸ்டேக் சுட்டிக்காட்டி பற்றிய சுருக்கமான விளக்கம் கீழே விவாதிக்கப்படுகிறது.
அடுக்கு / அடுக்கு சுட்டிக்காட்டி என்றால் என்ன?
வரையறை: அடுக்கு என்பது ஒரு சேமிப்பக சாதனமாகும், இது தகவல் அல்லது தரவை LIFO முறையில் சேமிக்கப் பயன்படுகிறது (கடைசியாக முதலில் வெளியேறியது). நாம் தரவை LIFO வடிவத்தில் உள்ளிடும்போதெல்லாம், முதலில் நீக்க வேண்டிய உறுப்பு கடைசி செருகும் உறுப்பு, எனவே கடைசியாக செருகப்பட்ட உறுப்பு முதலில் எடுக்கப்படுகிறது. இது ஸ்டாக் பாயிண்டர் (SP) எனப்படும் முகவரி பதிவேட்டில் உள்ள நினைவக அலகு. ஸ்டேக் சுட்டிக்காட்டி எப்போதும் ஸ்டேக்கின் மேல் உறுப்பைக் குறிக்கிறது, அதாவது தரவு எந்த இடத்தில் செருகப்பட வேண்டும் என்பதாகும்.
அடுக்கு வகைகள்
அவை இரண்டு வகையான அடுக்குகள் உள்ளன, அவை பதிவு அடுக்கு மற்றும் நினைவக அடுக்கு.
பதிவு அடுக்கு
ரெஜிஸ்டர் ஸ்டேக் என்பது மெமரி யூனிட்டில் இருக்கும் மெமரி சாதனமாகும், ஆனால் இது ஒரு சிறிய அளவு தரவை மட்டுமே கையாளுகிறது. நினைவகத்துடன் ஒப்பிடும்போது பதிவு அடுக்கின் அளவு மிகக் குறைவாக இருப்பதால், ஸ்டேக் ஆழம் எப்போதும் பதிவு அடுக்கில் மட்டுமே இருக்கும்.
பதிவு அடுக்கில் செயல்பாட்டை தள்ளுங்கள்
படி 1: ஸ்டாக் சுட்டிக்காட்டி 1 ஆல் அதிகரிக்கிறது.
SP ← SP + 1
படி 2: தரவை அடுக்கில் உள்ளிடவும்.
1000 [SP] CT
டி.ஆர் என்பது தரவு பதிவு
படி 3: அடுக்கு நிரம்பியதா இல்லையா என்பதைச் சரிபார்க்கவும்
(sp = 0) என்றால் (முழு ← 1)
படி 4: காலியாக இல்லை என்று குறிக்கவும்
வெற்று ← 0
பதிவு அடுக்கில் பாப் செயல்பாடு
படி 1: அடுக்கிலிருந்து தரவைப் படியுங்கள்.
DR M [SP]
படி 2: குறைப்பு அடுக்கு புள்ளி.
SP ← SP-1
படி 3: அடுக்கு காலியாக இருக்கிறதா இல்லையா என்பதை சரிபார்க்கவும்
sp = 0 என்றால் வெற்று ← 1
64-பிட் பதிவு அடுக்கின் அடுக்கு அமைப்பு கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளது.
பதிவு அமைப்பு
நினைவக அடுக்கு
மெமரி ஸ்டேக்கில், ஸ்டேக் ஆழம் நெகிழ்வானது. இது அதிக அளவு நினைவகத் தரவை ஆக்கிரமித்துள்ளது, அதேசமயம் பதிவு அடுக்கில் வரையறுக்கப்பட்ட எண்ணிக்கையிலான நினைவக சொற்கள் மட்டுமே சேமிக்கப்படும்.
மெமரி ஸ்டேக்கில் ஆபரேஷனை தள்ளுங்கள்
படி 1: SP ← SP-1
படி 2: 1000 [SP] CT
மெமரி ஸ்டேக்கில் பாப் செயல்பாடு
படி 1: DR M [SP]
படி 2: SP ← SP-1
பதிவு அலகுடன் ஒப்பிடுகையில், நினைவக அலகு அதிக அளவு தரவை சேமிக்கிறது. மெமரி ஸ்டேக் எண்ணிக்கை கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளது.
நினைவக அடுக்கு
மொத்த நினைவக அலகு மூன்று பகுதிகளாகப் பிரிக்கப்பட்டுள்ளது, முதல் நினைவக அலகு நிரலைக் கொண்டுள்ளது (அறிவுறுத்தல்களைத் தவிர வேறு எதுவும் இல்லை), இரண்டாவது பகுதி தரவு (செயல்பாடுகள்) மற்றும் மூன்றாம் பகுதி அடுக்கு. நிரல் அறிவுறுத்தல்கள் எப்போதும் நிரல் கவுண்டரில் (பிசி) சேமிக்கப்படும், தரவு பதிவேடுகள் முகவரி பதிவேட்டில் (AR) அடையாளம் காணப்படுகின்றன. 3000 முதல் 4001 வரையிலான முகவரி அடுக்குக்கு பயன்படுத்தப்படுகிறது மற்றும் முதல் உருப்படி அல்லது உறுப்பு 4001 இல் சேமிக்கப்படுகிறது.
8085 நுண்செயலியில் அடுக்கு / அடுக்கு சுட்டிக்காட்டி
8085 இன் புரோகிராமர் பார்வை நுண்செயலி பொது நோக்கம் பதிவேடுகள் மற்றும் சிறப்பு நோக்கம் பதிவேடுகள் . பொது நோக்கம் கொண்ட பதிவேடுகள் A, B, C, D, E, H, L, மற்றும் சிறப்பு நோக்கம் பதிவேடுகள் SP (Stack Pointer) மற்றும் PC (Program Counter) ஆகும். 8085 நுண்செயலியின் புரோகிராமர் பார்வை கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளது.
8085 இன் புரோகிராமர் பார்வை
ஸ்டாக் சுட்டிக்காட்டி என்பது 16-பிட் பதிவேட்டில் நினைவக முகவரி உள்ளது, ஸ்டாக் சுட்டிக்காட்டி (SP) உள்ளடக்கங்கள் FC78H என்று வைத்துக்கொள்வோம், பின்னர் நுண்செயலி 8085 அதை விளக்குகிறது. நினைவக இருப்பிடங்கள் FC78H முதல் FFFH வரையிலும், FC77H முதல் 0000H வரையிலும் பயனுள்ள தகவல்களைக் கொண்டுள்ளன. நினைவக இருப்பிடம் பயனுள்ள தகவல்களைக் கொண்டிருக்கவில்லை. ஸ்டாக் சுட்டிக்காட்டி விளக்கம் கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளது.
ஸ்டாக் பாயிண்டரின் விளக்கம்
அடுக்கு / அடுக்கு சுட்டிக்காட்டி அடிப்படை செயல்பாடுகள்
அவை அடுக்கின் இரண்டு செயல்பாடுகள் உள்ளன: புஷ் செயல்பாடு மற்றும் POP செயல்பாடு.
புஷ் ஆபரேஷன்
புஷ் என்றால் ஒரு உறுப்பை அடுக்கில் தள்ளுவது அல்லது செருகுவது என்று பொருள். புஷ் செயல்பாடு எப்போதும் ஸ்டாக் சுட்டிக்காட்டி அதிகரிக்கிறது மற்றும் பிஓபி செயல்பாடு எப்போதும் ஸ்டாக் சுட்டிக்காட்டி குறைகிறது. மிகுதி செயல்பாட்டின் விஷயத்தில், ஒரு இலவச இடம் இருக்கிறதா இல்லையா என்பதை நாம் சரிபார்க்க வேண்டும். இலவச இடம் கிடைத்தால், நாம் மிகுதி செயல்பாட்டிற்கு செல்லலாம், இலவச இடம் கிடைக்கவில்லை என்றால் பிழை செய்தி ஏற்படுகிறது. புஷ் செயல்பாட்டின் போது முறையே வழிதல் சரிபார்க்கப்பட வேண்டும். புஷ் மற்றும் பாப்பின் அடிப்படை செயல்பாடு கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளது.
PUSH மற்றும் POP இன் அடிப்படை செயல்பாடு
படம் (அ) என்பது அடுக்கு. உறுப்பை செருகும் உறுப்பை அடுக்கில் தள்ள விரும்பினால், நீங்கள் தள்ள வேண்டும் (கள், அ), அங்கு ‘கள்’ என்பது ஒரு அடுக்கைத் தவிர வேறில்லை. அடுக்கில், நாங்கள் ‘அ’ உறுப்பை வைக்கிறோம், இந்த செயல்பாடு படம் (பி) இல் காட்டப்பட்டுள்ளது. உருவத்தைப் பார்க்கவும் (3), அடுக்கில் a, b, c ஆகிய மூன்று கூறுகள் உள்ளன என்று வைத்துக்கொள்வோம், மேலும் அடுக்கு ஒரு உறுப்புடன் நிரப்பப்படுகிறது.
புஷ் (கள், டி) ஐப் பயன்படுத்தி நான்காவது உறுப்பு-‘டி’ ஐ செருக விரும்பினால், ஆனால் உறுப்பைச் செருக இடமில்லை, பின்னர் அது அடுக்கு நிரம்பி வழிகிறது என்பதைக் குறிக்கிறது. அடுக்கு நிரம்பியதும், புஷ் செயல்பாட்டின் வழிமுறை கீழே காட்டப்பட்டதும் வழிதல் சொல் பயன்படுத்தப்படுகிறது.
மிகுதி (அடுக்கு [], மேல், அதிகபட்ச அடுக்கு, உருப்படி)
if (மேல் == அதிகபட்சம் -1)
{
“வழிதல்” அச்சிடுக
}
வேறு
{
மேல் = மேல் + 1
அடுக்கு [மேல்] = உருப்படி
}
முடிவு
POP செயல்பாடு
POP என்பது அடுக்கின் மேற்புறத்தில் உள்ள உறுப்பை நீக்குவதாகும். பாப் செயல்பாட்டின் விஷயத்தில், அடுக்கு ஆரம்பத்தில் காலியாக இருக்கிறதா இல்லையா என்பதை நாம் சரிபார்க்க வேண்டும். அடுக்கு ஆரம்பத்தில் காலியாக இருந்தால், ஒரு கீழ்நிலை சூழ்நிலை ஏற்படுகிறது. ஸ்டேக் காலியாக உள்ளது என்று வைத்துக்கொள்வீர்கள், நீங்கள் ஸ்டேக்கில் உள்ள உறுப்புகளை பாப் செய்ய விரும்புகிறீர்கள், ஆனால் ஸ்டேக்கில் எந்த உறுப்புகளும் இல்லை, பின்னர் அது அடியில் பாய்வதற்கு வழிவகுக்கிறது.
பாப் செயல்பாட்டின் போது முறையே கீழ்நிலை சரிபார்க்கப்பட வேண்டும். பாப் செயல்பாட்டில், மேல் உறுப்பு எதுவாக இருந்தாலும், அவை நீக்கப்பட வேண்டும் அல்லது நீக்கப்பட வேண்டும், எனவே எந்த உறுப்பு பாப் செய்யப்படும் என்பதைக் குறிப்பிட தேவையில்லை, இயல்பாகவே மிக உயர்ந்த உறுப்பு பாப் செய்யப்படும். பாப் செயல்பாட்டின் வழிமுறை கீழே காட்டப்பட்டுள்ளது.
பாப் (அடுக்கு [], மேல், உருப்படி)
if (மேல் == - 1)
{
“கீழ்நோக்கி” அச்சிடுக
}
வேறு
{
உருப்படி = அடுக்கு [மேல்]
top = top-1
}
உதாரணமாக
உறுப்புகள் A, B, C, D, E என வரிசையில் செருகப்படுகின்றன, இது ஐந்து உறுப்புகளின் அடுக்கைக் குறிக்கிறது. படம் (அ) இல், அடுக்கில் 'ஏ' உறுப்பை தள்ள விரும்புகிறோம், பின்னர் மேல் பூஜ்ஜியமாக மாறும் (மேல் = 0), அதேபோல் 'பி' உறுப்பு தள்ளப்படும் போது மேல் = 1, 'சி' உறுப்பு போது மேல் = 2 தள்ளப்படுகிறது, 'டி' உறுப்பு தள்ளப்படும்போது மேல் = 3, மற்றும் 'ஈ' உறுப்பு தள்ளப்படும்போது மேல் = 4.
எனவே நான் எடுத்த உறுப்புகள் எதுவாக இருந்தாலும் அடுக்கில் வைக்கப்பட்டுள்ளன, இப்போது அடுக்கு நிரம்பியுள்ளது. நீங்கள் மற்றொரு உறுப்பை தள்ள விரும்பினால், அடுக்கில் இடமில்லை, எனவே அது வழிதல் என்பதைக் குறிக்கிறது. நீங்கள் ‘இ’ உறுப்பை முதலில் பாப் செய்ய விரும்பினால் இப்போது அடுக்கு நிரம்பியுள்ளது. மிகுதி செயல்பாடு கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளது.
புஷ் ஆபரேஷன்
அடுக்கில் உள்ள உறுப்புகளை நீக்க பாப் செயல்பாட்டைப் பயன்படுத்த வேண்டும். எனவே பாப் () ஐ பாப்பில் வாதங்களை எழுத வேண்டாம் என்று குறிப்பிடுங்கள், ஏனெனில் இது இயல்பாகவே மேல் உறுப்பை நீக்குகிறது. முதல் ‘இ’ உறுப்பு அடுத்த ‘டி’ உறுப்பு நீக்கப்படுகிறது… .. ’ஏ’. மேல் கூறுகள் நீக்கும்போது மேல் மதிப்பு குறைகிறது. மேல் = -1 போது அடுக்கு கீழ்நோக்கி குறிக்கிறது. பாப் செயல்பாடு கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளது.
POP செயல்பாடு
எனவே புஷ் மற்றும் பாப் செயல்பாட்டைப் பயன்படுத்தி உறுப்புகள் எவ்வாறு செருகப்பட்டு அடுக்கில் நீக்கப்படும் என்பதற்கான விளக்கம் இது.
பயன்பாடுகள்
ஸ்டேக் / ஸ்டேக் சுட்டிக்காட்டி பயன்பாடுகள்
- சரம் தலைகீழ்
- சமச்சீர் அடைப்பு
- UNDO / FINGER
- செயல்படுத்தும் பதிவுகளுக்கான கணினி அடுக்கு
- இன்ஃபிக்ஸ், முன்னொட்டு, போஸ்ட்ஃபிக்ஸ், வெளிப்பாடு
அடிக்கடி கேட்கப்படும் கேள்விகள்
1). கையில் ஸ்டாக் சுட்டிக்காட்டி என்ன?
ARM இல் செயலில் உள்ள ஸ்டேக்கிற்கு ஒரு சுட்டிக்காட்டியாக ஸ்டாக் சுட்டிக்காட்டி பதிவு (R13) பயன்படுத்தப்படுகிறது.
2). ஸ்டாக் சுட்டிக்காட்டி 16 பிட் ஏன்?
முந்தைய இருப்பிடத்தையும் நினைவக இருப்பிட முகவரியையும் சேமிக்கப் பயன்படுத்தப்படும் ஸ்டாக் சுட்டிக்காட்டி (எஸ்பி) மற்றும் நிரல் கவுண்டர் (பிசி) 16 பிட்கள், எனவே ஸ்டாக் சுட்டிக்காட்டி (எஸ்பி) 16 பிட் ஆகும்.
3). ஸ்டேக் சுட்டிக்காட்டியின் பங்கு என்ன?
ஸ்டேக் சுட்டிக்காட்டி (SP) இன் பங்கு, அடுக்கில் உள்ள தனிமத்தின் மேற்புறத்தைக் குறிப்பதாகும்.
4). 8085 இல் எந்த அடுக்கு பயன்படுத்தப்படுகிறது?
8085 இல் பயன்படுத்தப்படும் ஸ்டேக் லாஸ்ட் இன் ஃபர்ஸ்ட் அவுட் (LIFO) ஆகும்.
5). ஸ்டாக் சுட்டிக்காட்டி ஒரு பதிவேடு?
ஆம், ஸ்டேக் சுட்டிக்காட்டி (SP) என்பது ஒரு முகவரிப் பதிவாகும், இது எப்போதும் அடுக்கில் உள்ள உறுப்புகளின் மேற்புறத்தைக் குறிக்கிறது.