RISC-V அசெம்பிளரில் நிரலாக்கத்தைத் தொடங்க உங்களுக்கு என்ன தேவை.

கடைசியாக புதுப்பிக்கப்பட்டது: 08/10/2025
ஆசிரியர்: ஈசாக்கு
  • RV32I ஐப் புரிந்துகொள்கிறது: பதிவேடுகள், ABI மற்றும் ecall உடன் ஓட்டக் கட்டுப்பாடு.
  • வியாழனுடன் பயிற்சி மற்றும் பயிற்சிகள்: எதிர்மறை, காரணிகள், சங்கிலிகள், மறுநிகழ்வு.
  • மாஸ்டர் கிராஸ் டூல்செயின், ஸ்கிரிப்ட் objdump உடன் இணைத்தல் மற்றும் பிழைத்திருத்தம் செய்தல்.

RISC-V அசெம்பிளர்: தேவைகள் மற்றும் தொடங்குதல்

நீங்கள் அசெம்பிளரைப் பற்றி ஆர்வமாக இருந்தால், RISC-V தான் செல்ல வழி என்று நினைத்தால், நீங்கள் சரியான இடத்திற்கு வந்துவிட்டீர்கள். RISC-V இல் ASM உடன் தொடங்குவது தோன்றுவதை விட மிகவும் மலிவு. நீங்கள் கருவிகளைப் புரிந்து கொண்டால், மாதிரி நிரலாக்க மற்றும் கட்டிடக்கலையின் சில முக்கிய விதிகள்.

பின்வரும் வரிகளில் நான் பல ஆதாரங்களில் சிறந்தவற்றை இணைத்துள்ளேன்: வியாழன் வகை சிமுலேட்டர்களுடன் பயிற்சிகள், RV32I அடிப்படை திறனாய்வின் மரபுகள், லூப் மற்றும் ரிகர்ஷன் எடுத்துக்காட்டுகள், சிஸ்டம் அழைப்புகள், மற்றும் VHDL இல் RISC-V CPU வடிவமைப்பைப் பாருங்கள் (ALU, நினைவகக் கட்டுப்பாடு மற்றும் நிலை இயந்திரத்துடன்), மேலும் குறுக்கு-கருவிச் சங்கிலி மற்றும் இணைக்கும் ஸ்கிரிப்ட்களின் மதிப்பாய்வு.

RISC-V அசெம்பிளர் என்றால் என்ன, அது இயந்திர மொழியிலிருந்து எவ்வாறு வேறுபடுகிறது?

இரண்டும் இணைக்கப்பட்டிருந்தாலும் வன்பொருள், இயந்திர மொழி தூய பைனரி (ஒன்றுகள் மற்றும் பூஜ்ஜியங்கள்) CPU நேரடியாக இதை விளக்குகிறது, அதே நேரத்தில் அசெம்பிளர் நினைவூட்டல்களைப் பயன்படுத்துகிறது மற்றும் சின்னங்கள் ஒரு அசெம்பிளரை விட அதிகமாக படிக்கக்கூடியது பின்னர் பைனரிக்கு மொழிபெயர்க்கப்படுகிறது.

RISC-V என்பது மிகவும் சுத்தமான அடிப்படை திறனுடன் கூடிய திறந்த ISA ஐ வரையறுக்கிறது. RV32I (32-பிட்) சுயவிவரம் 39 பயனர் வழிமுறைகளை உள்ளடக்கியது. குறிப்பிடத்தக்க செங்குத்துத்தன்மையுடன், நினைவக அணுகலை தூய கணக்கீட்டிலிருந்து பிரிக்கிறது, மற்றும் GCC/LLVM இல் சிறந்த ஆதரவுடன்.

பதிவுகள், ஒப்பந்தங்கள் மற்றும் நுழைவுப் புள்ளி

RV32I இல் உங்களிடம் உள்ளது 32 பொது நோக்கப் பதிவேடுகள் (x0–x31) 32-பிட்; x0 எப்போதும் 0 ஆகப் படிக்கப்படும், அதை எழுத முடியாது. a0–a7 (வாதங்கள்), t0–t6 (தற்காலிகங்கள்), அல்லது s0–s11 ​​(சேமிக்கப்பட்டது) போன்ற மாற்றுப்பெயர்களும் ABI ஐப் பின்பற்றுவதற்குப் பயனுள்ளதாக இருக்கும்.

சூழல் அல்லது சிமுலேட்டரைப் பொறுத்து, நிரல் ஒரு குறிப்பிட்ட லேபிளில் தொடங்கலாம். வியாழனில், நிரல்கள் உலகளாவிய __start குறிச்சொல்லில் தொடங்குகின்றன., நுழைவுப் புள்ளியைக் குறிக்க, அதை நீங்கள் தெரியும் என்று அறிவிக்க வேண்டும் (எடுத்துக்காட்டாக, .globl உடன்).

தி குறிச்சொற்கள் ஒரு பெருங்குடலில் முடிவடையும்., நீங்கள் ஒரு வரிக்கு ஒரு வழிமுறையை மட்டுமே வைக்க முடியும், மேலும் கருத்துகளை # அல்லது உடன் தொடங்கலாம்; எனவே அசெம்பிளர் அவற்றைப் புறக்கணிக்கிறது.

கருவிகள் மற்றும் சிமுலேட்டர்கள்: வியாழன் மற்றும் அடிப்படை பணிப்பாய்வு

சிக்கல்கள் இல்லாமல் பயிற்சி செய்ய, உங்களிடம் உள்ளது வியாழன் சிமுலேட்டர்/அசெம்பிளர், SPIM/MARS/VENUS ஆல் ஈர்க்கப்பட்ட ஒரு வரைகலை கருவி, இது ஒரே சூழலில் திருத்துதல், அசெம்பிளி மற்றும் செயல்படுத்தலை எளிதாக்குகிறது.

வியாழனில் நீங்கள் எடிட்டர் தாவலில் கோப்புகளை உருவாக்கலாம், திருத்தலாம் மற்றும் நீக்கலாம். சேமித்த பிறகு, F3 உடன் அசெம்பிள் செய்து இயக்கவும். இயந்திரத்தின் நிலையைப் புரிந்துகொள்ள பதிவு மற்றும் நினைவகக் காட்சிகளைப் பயன்படுத்தி, அறிவுறுத்தல் வாரியாக ஓட்ட வழிமுறைகளை பிழைத்திருத்தம் செய்ய.

நிகழ்ச்சிகள் சுற்றுச்சூழலுக்கான அழைப்போடு முடிவடைய வேண்டும்: குறியீடு 10 உடன் a0 அமைப்பிலிருந்து வெளியேறு அழைப்பு (வெளியேறு). RISC-V இல், ecalls என்பது சிஸ்டம் அழைப்புகள் அல்லது சூழல்/அமைப்பிற்கான ட்ராப்களுக்குச் சமமானதாகும்.

ஒரு நிரல் மற்றும் கணினி அழைப்புகளின் குறைந்தபட்ச அமைப்பு

கல்வி எடுத்துக்காட்டுகளில் உள்ள வழக்கமான அமைப்பு ஒரு தொடக்கப் புள்ளியை வரையறுக்கிறது, வேலையைச் செய்கிறது மற்றும் ஒரு மின்னணு அழைப்போடு முடிகிறது. ecall வாதங்கள் பொதுவாக a0–a2 இல் பயணிக்கின்றன. மற்றும் சூழலைப் பொறுத்து, a7 இல் சேவைத் தேர்வி.

ஒரு லினக்ஸ் உதாரணமாக, RISC-V இல், நீங்கள் syscall என எழுதுவதன் மூலம் அச்சிட்டு, பொருத்தமான குறியீட்டைப் பயன்படுத்தி வெளியேறலாம். எழுதுவதற்கு a0 (fd), a1 (buffer), a2 (length) மற்றும் a7 ஆகியவை சேவை எண்ணுடன் பயன்படுத்தப்படுகின்றன.இறுதியாக, a0 திரும்பும் குறியீட்டிற்கும் a7 வெளியேறும் எண்ணிற்கும் அமைக்கப்படுகிறது.

# Ejemplo mínimo (Linux RISC-V) para escribir y salir
.global _start
_start:
  addi a0, x0, 1        # fd = 1 (stdout)
  la   a1, msg          # a1 = &msg
  addi a2, x0, 12       # a2 = longitud
  addi a7, x0, 64       # write
  ecall

  addi a0, x0, 0        # return code
  addi a7, x0, 93       # exit
  ecall

.data
msg: .ascii "Hola mundo\n"

நீங்கள் லினக்ஸுக்கு வெளியே பணிபுரிந்தால், எடுத்துக்காட்டாக தங்கள் சொந்த IoT சேவையுடன் கூடிய கல்வி சிமுலேட்டர்கள், சுற்றுச்சூழல் ஆவணங்களின்படி மின்னஞ்சல் எண் மற்றும் பதிவுகளை மாற்றவும்.

  விண்டோஸ் 8.1 ஐஎஸ்ஓ கோப்புகளைப் பெறுங்கள் [USB மற்றும் DVD அமைப்பு]

நிபந்தனைகள், சுழல்கள் மற்றும் நினைவாற்றலுடன் நீங்கள் வசதியாக இருக்க உதவும் ஆரம்ப பயிற்சிகள்.

ஒரு முழு எண் எதிர்மறையானதா என்பதைக் கண்டறிவதே ஒரு பொதுவான பயிற்சியாகும். நேர்மறையாக இருந்தால் 0 ஐயும் எதிர்மறையாக இருந்தால் 1 ஐயும் திருப்பி அனுப்பலாம்.; RV32I உடன், 0 உடன் ஒப்பிடுவதும், ஒரு செட்-ஆன்-லெஸ்-டான் என்பதும் நன்கு சிந்திக்கப்பட்ட ஒற்றை அறிவுறுத்தலில் சிக்கலைத் தீர்க்கிறது.

ஒரு எண்ணின் காரணிகளைப் பட்டியலிடுவது மற்றொரு மிகவும் பயனுள்ள பயிற்சியாகும்: 1 இலிருந்து n வரை பயணித்து, வகுபடு எண்களை அச்சிட்டு, எத்தனை இருந்தன என்பதைத் திருப்பி அனுப்புகிறது.நீங்கள் நிபந்தனைக்குட்பட்ட கிளைகள், வகுத்தல் (அல்லது மீண்டும் மீண்டும் கழித்தல்), மற்றும் கூட்டல் மற்றும் ஒப்பீடுகளுடன் கூடிய சுழல்களைப் பயிற்சி செய்வீர்கள்.

சரங்களுடன் பணிபுரிவது நினைவகத்தை நிர்வகிக்க உங்களை கட்டாயப்படுத்துகிறது: நினைவகத்தில் உள்ள ஒரு சரத்தின் ஒவ்வொரு எழுத்தையும் பார்வையிட்டு, இடத்தில் சிறிய எழுத்தை பெரிய எழுத்தாக மாற்றவும். அவை ASCII வரம்பிற்குள் பொருந்தினால். முடிந்ததும், அது சரத்தின் அசல் முகவரியைத் தரும்.

சுழல்கள், செயல்பாடுகள் மற்றும் மறுநிகழ்வு: காரணியாலான, ஃபைபோனச்சி மற்றும் ஹனோய் கோபுரம்

சுழல்களை வடிவமைக்கும்போது, ​​மூன்று தொகுதிகளைப் பற்றி சிந்தியுங்கள்: நிலை, உடல் மற்றும் படி. beq/bne/bge மற்றும் நிபந்தனையற்ற தாவல்கள் jal/j while/for உடன் கட்டமைக்கப்படுகின்றன மர்மம் இல்லாமல், கூடுதல் மற்றும் ஒப்பீடுகளை நம்பி.

.text
.globl __start
__start:
  li t0, 0        # i
  li t1, 10       # max
cond:
  bge t0, t1, end # si i >= max, salta
  # cuerpo: usar a0/a1 segun servicio IO del entorno
  addi t0, t0, 1  # i++
  j cond
end:
  li a0, 10
  ecall

செயல்பாட்டு அழைப்புகளில், ABI ஐ மதிக்கவும்: நீங்கள் அதிக அழைப்புகளைச் செய்யப் போகிறீர்கள் என்றால் சேமிக்கவும்., நீங்கள் அவற்றை மாற்றினால் s0–s11 ​​ஐப் பாதுகாக்கிறது, மேலும் ஒரு வார்த்தையின் மடங்குகளில் sp நகரும் அடுக்கைப் பயன்படுத்துகிறது.

காரணியாலானது கிளாசிக் மறுநிகழ்வு ஆகும்: அடிப்படை வழக்கு n==0 1 ஐ வழங்குகிறது; இல்லையெனில், factorial(n-1) ஐ அழைத்து n ஆல் பெருக்கவும். அழைப்பிற்கு முன் அடுக்கில் சேமிக்கப்பட்ட ra மற்றும் பதிவேடுகளைப் பாதுகாத்து, திரும்பும்போது அவற்றை மீட்டெடுக்கவும்.

factorial:
  beq a0, x0, base
  addi sp, sp, -8
  sw   ra, 4(sp)
  sw   s0, 0(sp)
  mv   s0, a0
  addi a0, a0, -1
  jal  factorial
  mul  a0, a0, s0
  lw   s0, 0(sp)
  lw   ra, 4(sp)
  addi sp, sp, 8
  jr   ra
base:
  li a0, 1
  jr ra

இரண்டையும் பயிற்சி செய்வதற்கு ஃபைபோனச்சி பயனுள்ளதாக இருக்கும் இரண்டு அழைப்புகளுடன் மறுநிகழ்வு திரட்டி மாறிகள் கொண்ட திறமையான மறு செய்கை பதிப்பாக. ஓட்டம் மற்றும் அளவுரு கட்டுப்பாட்டில் உங்களுக்கு ஒரு சவால் தேவைப்பட்டால், ஒரு தீர்வை அசெம்பிளருக்கு மொழிபெயர்க்கவும். ஹனோய் கோபுரங்கள் நான்கு வாதங்களுடன்: வட்டுகள், மூலம், இலக்கு மற்றும் துணை கோபுரம்; இது அழைப்பு வரிசையை மதிக்கிறது மற்றும் ஒவ்வொரு இயக்கத்தையும் காட்டுகிறது.

நினைவக அணுகல், வரிசைகள் மற்றும் சர கையாளுதல்

RISC-V இல், நினைவக அணுகல் சுமை/சேமிப்பு மூலம் செய்யப்படுகிறது: வார்த்தைகளுக்கு lw/sw, அரை வார்த்தைகளுக்கு lh/sh, மற்றும் பைட்டுகளுக்கு lb/sb, கட்டணங்களில் கையொப்பமிடப்பட்ட அல்லது கையொப்பமிடப்படாத மாறுபாடுகளுடன் (lb vs lbu, lh vs lhu).

  ஆண்ட்ராய்டில் ப்ராஜெக்ட் சோம்பாய்டு: மொபைலில் விளையாட முடியுமா?

முழு எண் வரிசைகளைக் கடக்க, ஒரு குறியீட்டிற்கு 4-பைட் ஆஃப்செட்களைப் பயன்படுத்தவும்; உரை சரங்களுக்கு, டெர்மினேட்டரைக் கண்டுபிடிக்கும் வரை பைட்டுக்கு பைட்டு முன்னேறுகிறது. மரபு தேவைப்பட்டால் (எ.கா., \0). அடிப்படை முகவரிகளைச் சேமித்து, பொருத்தமான முறையில் addi/auipc/la உடன் சுட்டிகளைக் கையாள நினைவில் கொள்ளுங்கள்.

புதிதாக ஒரு RV32I CPU ஐ வடிவமைத்தல்: ஒரு உயர்நிலை கண்ணோட்டம்.

நீங்கள் சிலிக்கானுக்குச் செல்ல விரும்பினால், ஒரு கல்வித் திட்டம் ஒரு VHDL இல் RV32I CPU, FPGA இல் ஒருங்கிணைக்கக்கூடியது குறைந்த-நடுத்தர வரம்பு. நிரல் ROM, தரவு RAM மற்றும் LED ஐ ஒளிரச் செய்வதற்கான எளிய GPIO ஆகியவை அடங்கும்.

கர்னல் அடிப்படை திறனாய்வை செயல்படுத்துகிறது (M/A/C நீட்டிப்புகள் அல்லது CSRகள் இல்லாமல்), 32-பிட் முகவரி பேருந்தைப் பயன்படுத்துகிறது. மேலும் பொருத்தமான இடங்களில் 8-/16-/32-பிட் சைன்-எக்ஸ்டெண்டட் மெமரி அணுகலை அனுமதிக்கிறது. இந்த வடிவமைப்பு பதிவேடுகள், ALU, மெமரி கன்ட்ரோலர் மற்றும் ஸ்டேட் மெஷின் ஆகியவற்றை தெளிவாகப் பிரிக்கிறது.

ALU, மாற்றங்கள் மற்றும் "தாமதமான ஏற்றுதல்" என்ற யோசனை

ALU என்பது போன்ற செயல்பாடுகளுடன் இணைந்து விவரிக்கப்படுகிறது கூட்டல், கழித்தல், XOR, OR, AND, ஒப்பீடுகள் (கையொப்பமிடப்பட்டவை மற்றும் கையொப்பமிடப்படாதவை) மற்றும் தருக்க/எண்கணித மாற்றங்கள்.

FPGA-வில் LUT-களைச் சேமிக்க, பல-பிட் மாற்றங்கள் செயல்படுத்தப்படுகின்றன. மாநில இயந்திரத்தால் கட்டுப்படுத்தப்படும் 1-பிட் மாற்றங்களை மீண்டும் செய்தல்: நீங்கள் பல சுழற்சிகளைப் பயன்படுத்துகிறீர்கள், ஆனால் தருக்க வளங்களைக் குறைக்கிறீர்கள்.

ஒத்திசைவான சுற்றுகளில், கடிகார விளிம்புகளில் மாற்றங்கள் காணப்படுகின்றன. "தாமதமான சுமை" என்ற கருத்து, மல்டிபிளெக்சரால் தேர்ந்தெடுக்கப்பட்டவை அடுத்த சுழற்சியில் பதிவேட்டைப் பாதிக்கின்றன என்பதை நினைவூட்டுகிறது., ஃபெட்ச்-டிகோட்-எக்ஸிக்யூட் ஸ்டேட் மெஷினை வடிவமைக்கும்போது ஒரு முக்கிய அம்சம்.

நினைவக கட்டுப்படுத்தி மற்றும் வரைபடம்: ROM, RAM மற்றும் GPIO

ஒரு நினைவகத் தொகுதி ROM மற்றும் RAM ஐ ஒரு தொடர்ச்சியான இடத்தில் ஒருங்கிணைக்கிறது, செயலி இடைமுகத்தை எளிதாக்குதல்கட்டுப்படுத்தி AddressIn (32 பிட்கள்), DataIn, அகலம் (பைட்/அரை/சொல்), குறி நீட்டிப்பு சமிக்ஞை, WE (படிக்க/எழுத) மற்றும் பரிமாற்றங்களைத் தொடங்கு ஆகியவற்றைப் பெறுகிறது.

அறுவை சிகிச்சை முடிந்ததும், ReadyOut 1 ஆக அமைக்கப்பட்டுள்ளது, அது படிக்கப்பட்டிருந்தால், டேட்டாஅவுட்டில் தரவு உள்ளது (கோரப்படும்போது கையொப்பம் நீட்டிக்கப்படும்). அது எழுதப்பட்டிருந்தால், தரவு RAM இல் இருக்கும்.

ஒரு நடைமுறை வரைபடத்தின் எடுத்துக்காட்டு: 0x0000 முதல் 0x0FFF வரையிலான ROM, 0x1000 இல் ஒரு GPIO பைட் (ஒரு பின்னுக்கு பிட் 0) மற்றும் 0x1001 முதல் 0x1FFF வரை ரேம்இதன் மூலம் நீங்கள் வெளியீட்டு பிட்டை எழுதி மாற்றுவதன் மூலம் ஒரு பிளிங்கரை உருவாக்கலாம்.

பதிவேடுகள், மல்டிபிளெக்சர்கள் மற்றும் மாநில இயந்திரங்கள்

CPU ஆனது VHDL இல் உள்ள வரிசைகளுடன் உடனடிப்படுத்தப்பட்ட 32 பொது நோக்கப் பதிவேடுகளை வரையறுக்கிறது, இதில் குறிவிலக்கியையும் ALU இலிருந்து எழுதும் இலக்கைத் தேர்ந்தெடுத்து மீதமுள்ளவற்றை வைத்திருக்க.

மல்டிபிளெக்சர்கள் ALU உள்ளீடுகளை நிர்வகிக்கின்றன (செயல்பாடுகள் மற்றும் செயல்பாடு), நினைவக கட்டுப்படுத்திக்கு சமிக்ஞைகள் (அகலங்கள், முகவரி, தொடக்கக் கட்டுப்பாடு மற்றும் படிக்க/எழுதுதல்) மற்றும் சிறப்புப் பதிவேடுகள்: PC, IR மற்றும் மறு செய்கை மாற்றங்களுக்கான துணை கவுண்டர்.

அரசு இயந்திரம் இதிலிருந்து தொடங்குகிறது மீட்டமைக்க, PC சுட்டிக்காட்டிய வழிமுறைகளைப் பெறுகிறது. (4-பைட் வாசிப்பு), இது தயாரானதும் IR இல் ஏற்றப்பட்டு செயல்படுத்தல் முனைகளுக்கு அனுப்பப்படுகிறது: ALU (ஷிப்டுகளைத் தவிர 1 சுழற்சியில் ஒரு வழிமுறை), சுமை/சேமிப்பு, கிளைகள் மற்றும் தாவல்கள், ebreak போன்ற சிறப்பு வழிமுறைகளுக்கு கூடுதலாக.

  விண்டோஸ் 10 இல் புளூடூத்தை எவ்வாறு அமைப்பது

குறுக்கு-கருவிச் சங்கிலி, இணைத்தல் மற்றும் பிழைத்திருத்தம்

RV32I பைனரிகளை உருவாக்க, ஒரு குறுக்கு GCC (இலக்கு riscv32-none-elf). நீங்கள் C/C++/ASM மூலங்களைத் தொகுத்து, நினைவக வரைபடத்தை வரையறுக்கும் ஒரு ஸ்கிரிப்டுடன் இணைத்து, வெளியீட்டை உங்கள் ROM/FPGA எதிர்பார்க்கும் வடிவத்திற்கு மாற்றுகிறீர்கள்.

ஒரு எளிய ஹூக் ஸ்கிரிப்ட் வைக்கக்கூடியது 0x0000 இலிருந்து ROM இல் .text மற்றும் 0x1004 இலிருந்து RAM இல் உள்ள .data (0x1000–0x1003 GPIO பதிவேடுகளால் ஆக்கிரமிக்கப்பட்டிருந்தால்). தொடக்க வழக்கத்தை "நிர்வாணமாக" வைத்து, RAM இன் இறுதியில் ஸ்டேக் சுட்டிக்காட்டி (எ.கா. 0x1FFC) பிரதானத்தை அழைப்பதற்கு முன்.

/* Mapa simple
 * ROM: 0x00000000 - 0x00000FFF
 * GPIO: 0x00001000 - 0x00001003
 * RAM: 0x00001004 - 0x00001FFF
 */
SECTIONS {
  . = 0x00000000;
  .text : { *(.startup) *(.text) *(.text.*) *(.rodata*) }
  . = 0x00001004;
  .data : { *(.data) *(.data.*) }
}

riscv32-none-elf-objdump உடன் நீங்கள் ELF ஐ பிரித்து முகவரிகளைச் சரிபார்க்கவும்.; உதாரணமாக, நீங்கள் பார்ப்பீர்கள் துவக்க lui/addi/jal போன்ற வழிமுறைகளுடன் 0x00000000 இல் உங்கள் பிரதானத்திற்கு மாறுதல். VHDL உருவகப்படுத்துதலுக்கு, GTKWave உடன் நீங்கள் திறக்கக்கூடிய தடயங்களை GHDL உருவாக்குகிறது.

உருவகப்படுத்துதலில் சரிபார்த்த பிறகு, வடிவமைப்பை ஒரு FPGA (குவார்டஸ் அல்லது பிற கருவிச் சங்கிலி) க்கு எடுத்துச் செல்லுங்கள். RAM உள் தொகுதிகளாகக் கருதப்பட்டு, குறியீடு தெளிவான RTL ஆக இருந்தால், நீங்கள் அனுபவமிக்க சாதனங்களில் கூட, ஆச்சரியங்கள் இல்லாமல் ஒருங்கிணைக்க வேண்டும்.

தொடங்கும் போது நடைமுறை நினைவூட்டல்கள் மற்றும் வழக்கமான தவறுகள்

அதை மறந்துவிடாதே x0 எப்போதும் பூஜ்ஜியமாகும்.; அதற்கு எழுதுவது எந்த விளைவையும் ஏற்படுத்தாது, அதைப் படிப்பது 0 ஐத் தரும். சேர்த்தல், ஒப்பீடுகள் மற்றும் பதிவேட்டை சுத்தம் செய்தல் ஆகியவற்றில் இதை உங்கள் நன்மைக்காகப் பயன்படுத்தவும்.

நீங்கள் அம்சங்களை செயல்படுத்தும்போது, நீங்கள் மாற்றியமைக்கும் ra மற்றும் sN பதிவுகளைச் சேமிக்கவும்., மற்றும் sp இல் சொல்-சீரமைக்கப்பட்ட கூட்டல்/கழித்தல்களுடன் அடுக்கை நிர்வகிக்கிறது. திரும்பியதும், அது தலைகீழ் வரிசையில் மீட்டமைக்கப்பட்டு jr ra உடன் தாவுகிறது.

ஜூபிடர் போன்ற சிமுலேட்டர்களில், அதைச் சரிபார்க்கவும் __தொடக்கம் உலகளாவியது, நீங்கள் அதை ecall உடன் முடிக்கிறீர்கள். சரி (வெளியேற a0=10). ஏதாவது தொடங்கவில்லை என்றால், லேபிள், உலகத்தன்மை மற்றும் மறுதொகுப்பைச் சரிபார்க்கவும் (F3).

IO உடனான பயிற்சிகளில், சுற்றுச்சூழல் நெறிமுறையை மதிக்கவும்.: எந்தப் பதிவேடுகள் அளவுருக்கள், சேவை எண் மற்றும் முகவரி அல்லது உடனடி மதிப்பு எதிர்பார்க்கப்படுகிறதா என்பதைக் கொண்டுள்ளன. சிமுலேட்டர் அல்லது இயக்க முறைமை ஆவணங்களைப் பயன்படுத்தவும்.

தெளிவான ISA அடிப்படை (RV32I, பதிவேடுகள் மற்றும் ABI), ஜூபிடர் போன்ற வசதியான சிமுலேட்டர் மற்றும் அதிகரிக்கும் எடுத்துக்காட்டுகள் (எதிர்மறை, காரணிகள், பெரிய எழுத்து, லூப்கள், காரணியாலான, ஃபிபோனச்சி மற்றும் ஹனோய்) ஆகியவற்றுடன், RISC-V அசெம்பிளர் ஒரு சுவராக இருப்பதை நிறுத்திவிட்டு, ஒரு CPU எப்படி சிந்திக்கிறது என்பதைப் புரிந்துகொள்ள ஒரு ஜூசி நிலப்பரப்பாக மாறுகிறது. நீங்கள் VHDL-க்கு செல்லத் துணிந்தால், ALU, நினைவகம் மற்றும் கட்டுப்பாடு ஆகியவை எவ்வாறு ஒன்றாகப் பொருந்துகின்றன என்பதைப் பார்ப்பீர்கள்.: அறிவுறுத்தல் பெறுதல் மற்றும் சோம்பேறி ஏற்றுதல் முதல் நினைவக இடைமுகங்கள் மற்றும் ROM, RAM மற்றும் GPIO கொண்ட வரைபடம் வரை, இது உங்கள் சொந்த செயலியுடன் LED ஐ ஒளிரச் செய்ய உங்களை அனுமதிக்கிறது.

திட்டத்திற்கான சிறந்த திட்டங்கள்
தொடர்புடைய கட்டுரை:
திட்டத்திற்கான 7 சிறந்த திட்டங்கள்