Tải bản đầy đủ (.pdf) (33 trang)

báo cáo môn học assembly language and computer architechture lab it 3280e

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.59 MB, 33 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG Đ I H C BÁCH KHOA HÀ N IẠỌỘ</b>

<b>BÁO CÁO </b>

<b>Final projects Course 2020-2021</b>

<b> Computer Architechture Lab</b>

<i>Gi ng viên hảướng dẫẫn: </i>

TS. Đỗỗ Cỗng Thuầần

<i>Sinh viên th c hi n:ựệNhóm 16:</i>

Hà Quang Thiềầu - 20184309Phan Hùng Khánh - 20184277

<i>Mã l p:ớ</i> 131102

Hà N i, tháng 7 năm 2022ộ

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>Báo cáo Final - project 20212</b>

<b>Architechture Lab </b>

Trong báo cáo này , nhóm em xin được trình bày n i d ng th c hi n các ch đềầ đã độụựệủược phần cỗng nh sau:ư

Phầần 1: Bài 6 do Phan Hùng Khánh th c hi n.ựệPhầần 2: Bài 7 do Hà Quang Thiềầu th c hi n.ựệ

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>I. Bài 11.Đềề bài</b>

Đềầ bài: Hàm cầấp phát b nh malloc()ộớ

Mỗ t : Chảương trình cho bền dưới là hàm malloc(), kèm theo đó là ví d minh h a, ụọđược viềất băầng h p ng MIPS, đ cầấp phát b nh cho m t biềấn con tr nào đó.Hãyợữểộớộỏđ c chọương trình và hi u rõ nguyền tăấc cầấp phát b nh đ ng.Trền c s đó, hãy ểộớ ộơ ởhồn thi n chệương trình nh sau. L u ý, ngồi viềất các hàm đó, cầần viềất thềm m t ưưộsỗấ ví d minh h a đ thầấy vi c s d ng hàm đó nh thềấ nào.ụọểệử ụư

1) Vi c cầấp phát b nh ki u word/m ng word có 1 lỗỗi, đó là ch a b o đ m qui tăấc ệộớ ểảưảảđ a ch c a ki u word ph i chia hềất cho 4. Hãy khăấc ph c lỗỗi này.ịỉ ủểảụ

2) Viềất hàm lầấy giá tr Word /Byte c a biềấn con tr (tịủỏ ương t nh *CharPtr, *BytePtr,ựư*WordPtr)

3) Viềất hàm lầấy đ a ch biềấn con tr (tịỉỏ ương t nh &CharPtr, &BytePtr, *WordPtr)ựư4) Viềất hàm th c hi n copy 2 con tr xầu kí t (Xem ví d vềầ CharPtr)ựệỏựụ

5) Viềất hàm tnh toàn b lộ ượng b nh đã cầấp phát cho các biềấn đ ngộớộ

6) Hãy viềất hàm Malloc2 đ cầấp phát cho m ng 2 chiềầu ki u .word v i tham sỗấ vào ểảểớgỗầm:

a.Đ a ch đầầu c a m ngịỉủảb.Sỗấ dòng

2) Viềất hàm lầấy giá tr Word /Byte c a biềấn con tr (tịủỏ ương t nh *CharPtr, ựư*BytePtr, *WordPtr)

Đ lầấy giá tr c a m t biềấn con tr , s d ng hàm lw đ lầấy giá tr t i ỗ nh , có ểị ủộỏ ử ụểị ạớđ a ch tịỉ ương đương v i giá tr c a con tr đóớị ủỏ

3) Viềất hàm lầấy đ a ch biềấn con tr (tịỉỏ ương t nh &CharPtr, &BytePtr, *WordPtr)ựưĐ lầấy đ a ch c a biềấn con tr , ch cầần load giá tr c a con tr và in raểịỉ ủỏỉị ủỏ4) Viềất hàm th c hi n copy 2 con tr xầu kí t (Xem ví d vềầ CharPtr)ựệỏựụ

Đ copy 2 con tr xầu kí t , trểỏựước tền lầấy đ a ch c a con tr cầần copy, sau đóịỉ ủỏl u nó vào vùng nh c a con tr th 2ướ ủỏứ

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

5) Viềất hàm tnh toàn b lộ ượng b nh đã cầấp phát cho các biềấn đ ngộớộTrong yều cầầu này, có hai trường h p cầần tnh tốn:ợ

- TH1: Tính kích thước th c dùng đã cung cầấp cho các con tr , trong trựỏườngh p này, ch cầần tnh t ng kích thợỉổước t i phầần cầấp phát.ạ

- TH2: Tính kích thước đã dùng sau khi chu n hóa, trong trẩường h p này, ợngồi vi c tnh kích thệc t i phầần cầấp phát, cầần c ng thềm c phầần ướạộảchu n hóa c a các biềấn con trẩủỏ

6) Hãy viềất hàm Malloc2 đ cầấp phát cho m ng 2 chiềầu ki u .word v i tham sỗấ vào ểảểớgỗầm:

a.Đ a ch đầầu c a m ngịỉủảb.Sỗấ dịng

c.Sỗấ c tộ

B i vì trong b nh , các ỗ nh đởộớớ ược săấp xềấp theo th t , khỗng ph i d ng ứ ựảạm ng, nền th c chầất, vi c cầấp phát b nh cho m t m ng 2 chiềầu tảựệộớộảương đương v i vi c cầấp phát cho m ng này m t dãy ỗ nh liềần nhau v i kích ớệảộớớthước băầng ( sỗấ dịng * sỗấ c t * kích thộước ki u )ể

7) Tiềấp theo cầu 6, hãy viềất 2 hàm GetArray[i][j] và SetArray[i][j] đ lầấy/thiềất l p giá ểậtr cho phầần t dòng i c t j c a m ng.ịử ởộủả

Theo phương pháp cầấp phát b nh phầần 6), t i phầần này, trộớ ởạước tền, chúng ta seỗ tm v trí ỗ nh địớ ược gán cho phầần t hàng i, c t j c a m ng, ửộủảbăầng cách (đ a ch đầầu c a m ng + (i * sỗấ dòng c a m ng + j)* kích thịỉủảủảước ki uể. Sau khi tm được v trí ỗ nh đó, tềấn hành Set (băầng l nh sw) ho c Get ịớệặ(băầng lw) giá tr phầần t t i v trí [i][j]ịử ạ ị

<b>3. Ý nghĩa các chương trình con</b>

a. SysInitMem: Kh i t o vùng cầấp phát đ ng, đánh dầấu v trí băất đầầu c a vùng ở ạộịủcó th cầấp phát b nh đ ng.ểộớ ộ

b. malloc: hàm cầấp phát b nh cho các biềấn con tr .ộớỏInput: - $a0: đ a ch c a biềấn con trịỉ ủỏ

- $s1: sỗấ phầần tử

- $a2: kích thước mỗỗi phầần tử

Kích thước c a vùng nh seỗ đủớược tnh băầng $s1*$a2, sau đó c ng thềm ộphầần chu n hóa.ẩ

Output: - $v0: đ a ch c a biềấn con tr cầần c p nh tịỉ ủỏậậ

c. checkDevide4: Hàm chu n hóa, ki m tra xem đ a ch đã th a mãn chia hềất ẩểịỉỏcho 4 hay ch a, nềấu ch a thì c ng thềm 1 và tềấp t c l p l iưưộụ ặạ

Input: - $t8: đ a ch hi n t iịỉệạ

Outpyt: -$t8: đ a ch sau khi địỉược chu n hóaẩ

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

d. done: Hồn thành cỗng vi c chu n hóa và l u l i đ a ch đầầu tền m i là đ a ệẩưạịỉớịch hi n t i cho các hàm malloc tềấp theo.ỉệạ

e. getValue: Hàm lầấy giá tr c a m t con tr ,ị ủộỏInput: -$a0: đ a ch c a con trịỉ ủỏOutput: -$v0: giá tr c a biềấn con tr $a0ị ủỏf. getAddress: Hàm lầấy đ a ch c a biềấn con trịỉ ủỏ

Input: -$a0: đ a ch c a biềấn con trịỉ ủỏOutput: tr vềầ giá tr $a0ảị

g. CopyPointer: Hàm copy đ a ch c a con tr này, vào m t con tr khácịỉ ủỏộỏInput: - $a0: đ a ch c a biềấn con tr nguỗầnịỉ ủỏ

Output: -$v0: đ a ch c a biềấn con tr đích.ịỉ ủỏ

h. CalculateMemory: Tính tốn lượng b nh đã s d ng (ch a tnh phầần chu nộớử ụưẩhóa ). Đ tnh t ng lểổượng b nh đã s d ng, dùng m t thanh ghi $t0 là biềấn ộớử ụộtoàn c c, $t0 seỗ đụược tăng thềm đúng m t lộ ượng băầng b nh độớ ược cầấp phátcho con tr đó. Hàm CalculateMemory seỗ tr vềầ giá tr $t0 hi n t i khi đỏảịệạược g i đềấn.ọ

i. CalculateMemory2: Tính tốn lượng b nh đã s d ng (đã tnh phầần chu n ộớử ụẩhóa ). Cách ho t đ ng tạộương t v i hàm CalculateMemory, khác bi t chỗỗ, ự ớệ ởthành ghi $t3 (biềấn toàn c c l u tr lụ ưữ ượng b nh s d ng) ngoài vi c c ng ộớ ử ụệộthềm kích thước được cung cầấp, seỗ c ng thềm phầần kích thộước được chu n ẩhóa (đ th a mãn chia hềất cho 4). Hàm CalculateMemory2 seỗ tr vềầ giá tr $t3ểỏảịhi n t i khi đệạược g i đềấn.ọ

j. malloc2, checkDevide4_2, và done_2: các hàm này ho t đ ng tạộương t nh ựưcác hàm malloc, checkDevide4, và done trền.ở

k. GetArrayAt: hàm lầấy giá tr t i v trí c th c a m ng.ị ạ ịụể ủảInput: - $a0: đ a ch đầầu tền c a m ngịỉủả

- $a1: v trí dịngị- $a2: v trí c tịộ

Output: - $v0: giá tr c a phầần t t i v trí [i][j] c a m ngị ủử ạ ịủả

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

l. SetArrayAt: hàm đ t giá tr t i v trí c th c a m ng.ặị ạ ịụể ủả

Input: - $v0: giá tr cầần đ t cho phầần t th [i][j] c a m ng.ịặửứủả- $a0: đ a ch đầầu tền c a m ngịỉủả

- $a1: v trí dịngị- $a2: v trí c tịộ

m. exit: Hàm thốt chương trình do lỗỗi index

<b>4. Kềết qu ch y chảạương trình.</b>

Sau khi ch y chạương trình, thu được kềất qu c a các cầu h i t 1-7 nh sau:ả ủỏ ừư

<b>II.Bài 7</b>

<b>1. Đềề bài: Chương trình ki m tra cú pháp l nh MIPS:ểệ</b>

Trình biền d ch c a b x lý MIPS seỗ tềấn hành ki m tra cú pháp các l nh h p ng trong ịủộ ửểệợữmã nguỗần, xem có phù h p vềầ cú pháp hay khỗng, rỗầi m i tềấn hành d ch các l nh ra mãợớịệmáy. Hãy viềất m t chộương trình ki m tra cú pháp c a 1 l nh h p ng MIPS bầất kì ểủệợữ(khỗng làm v i gi l nh) nh sau:ớả ệư

- Cho biềất l nh h p ng đó cầần bao nhiều chu kì thì m i th c hi n xong.ệợữớựệ

G i ý: nền xầy d ng m t cầấu trúc ch a khuỗn d ng c a t ng l nh v i tền l nh, ki u c aợựộứạủừệớệểủtoán h ng 1, toán h ng 2, tốn h ng 3, sỗấ chu kì th c hi n.ạạạựệ

<b>2. Phân tch cách th c hi n:ựệ</b>

Bài toán đ t ra đầy: Nh p vào 1 cầu l nh, sau đó ki m trra cú pháp c a cầu l nh. ặởậệểủệDo đó, ra chia thành các bài toán nh :ỏ

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

L u l i cầu l nh và chia thành các phầần gỗầm opcode + toán h ng.ưạệạKi m tra opcodeể

Ki m tra sỗấ lểượng, cầấu trúc c a các toán h ng có đúng khỗng.ủạL u ý vi c b qua kho ng trăấng.ưệỏả

In kềất quả

Ngoài ra, ta cũng xầy d ng cầấu trúc ch a khuỗn d ng c a t ng l nh v i tền l nh, ki uựứạủừệớệểc a toán h ng 1, toán h ng 2, tốn h ng 3, sỗấ chu kì th c hi n và cầấu trúc l u các ủạạạựệưthanh ghi đ ki m traể ể

C th , vi c phần tch cầu l nh đụểệệược th hi n qua s đỗầ dểệơưới đầy:

<b>3. Ý nghĩa chương trình con</b>

+) open_and_read_fle: ý nghĩa c a chủương trình này seỗ m và đ c các fle cầấu trúc có săỗn ởọgỗầm: Register.txt và Opcode.txt. Sau khi m các fle thì d li u c a Opcode.txt seỗ đởữ ệủượ ưc l u trong Library_Opcode và d li u c a Register seỗ đữ ệủượ ưc l u trong List_Register

+) skipSpace: ý nghĩa c a chủương trình con này là seỗ b qua các kho ng trăấng. Trong quá ỏảtrình nh p, ngậi dùng seỗ ngăn cách cách thành phầần băầng các kho ng trăấng, c th là ‘ ’ ườảụểho c ‘\tab’. Trong hàm này seỗ s d ng $s2 l u đ a ch c a Command, và $s7 l u v trí c a kí ặử ụưịỉ ủưịủt đang xét trong Command.ự

+) check_Opcode: ý nghĩa c a hàm này là seỗ ki m tra Opcode có h p l hay khỗng? Băầng ủểợệcách truy xuầất d li u vềầ opcode đữ ệượ ưc l u trong Library_Opcode

Hàm seỗ tr vềầ kềất qu $v0: băầng 0 khi opcode khỗng h p l , băầng 1 khi opcode h p lảảợệợệ+) check_ToanHang: hàm này seỗ giúp th c hi n vi c ki m tra s h p l c a các toán h ng ựệệểự ợệ ủạtương ng v i t ng Opcode..ứớ ừ

Hàm seỗ tr vềầ kềất qu $v0: băầng 0 khi khỗng h p l , băầng 1 khi h p lảảợệợệ

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

T i chạương trình con này, seỗ s d ng các chử ụương trình con khác gỗầm:

-) read_Toan_Hang: đ c và l u toán h ng vào ToanHang1, ToanHang2, ToanHang3ọưạ-) check_register: ki m tra xem tốn h ng có ph i thanh ghi hay khỗng?ểạảHàm có các param:

[in] $s1: ch a đ a ch c a toán h ngứịỉ ủạ

[out] $v0: băầng 0 khi khỗng h p l , băầng 1 khi h p lợệợệ

-) check_Number: ki m tra xem tốn h ng có ph i sỗấ nguyền hay khỗng?ểạảHàm có các param:

[in] $s1: ch a đ a ch c a toán h ngứịỉ ủạ

[out] $v0: băầng 0 khi khỗng h p l , băầng 1 khi h p lợệợệ-) check_Hex: ki m tra xem tốn h ng có ph i sỗấ Hex hay khỗng?ểạảHàm có các param:

[in] $s1: ch a đ a ch c a toán h ngứịỉ ủạ

[out] $v0: băầng 0 khi khỗng h p l , băầng 1 khi h p lợệợệ

-) check_Label: ki m tra xem toán h ng có ph i Label h p l hay khỗng?ểạảợệHàm có các param:

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

+) Ki m tra cầu l nh: div $s1, $s2ểệ

+) Ki m tra cầu l nh: j mainểệ

<b>III. Source Code</b>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

CharPtr: .word 0 # Bien con tro, tro toi kieu asciizBytePtr: .word 0 # Bien con tro, tro toi kieu ByteWordPtr: .word 0 # Bien con tro, tro toi mang kieu WordCpyCharPtr: .word 0

ArrayWordPtr: .word 0MaxDong: .word 5MaxCot: .word 5Space: .asciiz " -> "newline: .asciiz "\n\n"

Message11: .asciiz "Dia chi o nho CharPtr da chuan hoa la: "Message12: .asciiz "Dia chi o nho BytePtr da chuan hoa la: "Message13: .asciiz "Dia chi o nho WordPtr da chuan hoa la: "

Message21: .asciiz " Gia tri cua con tro CharPtr la: "Message22: .asciiz " Gia tri cua con tro BytePtr la: "Message23: .asciiz " Gia tri cua con tro WordPtr la: "

Message31: .asciiz " Dia chi cua bien con tro la: "Message32: .asciiz " Dia chi cua bien con tro la: "Message33: .asciiz " Dia chi cua bien con tro la: "

Message4: .asciiz "Q4: Dia chi cua con tro va con tro copy la: "Message5: .asciiz "Q5: Luong bo nho da cap phat la: "

Message6: .asciiz "Q6: Luong bo nho sau khi su dung malloc 2 (thuc dung vs chuan hoa): "Message71: .asciiz "Q7.1: SetArray[3][3], Set gia tri 1007 cho phan tu vi tri [3][3] cua mang co dia chi la: "

Message72: .asciiz "Q7.2: GetArray[3][3], Lay gia tri phan tu vi tri [3][3] cua mang: "

exitMess: .asciiz "The index is out of range".kdata

#Bien chua dia chi dau tien cua vung nho con trongSys_TheTopOfFree: .word 1

#Vung khong gian tu do, dung de cap bo nho cho cac bien con troSys_MyFreeSpace:

#---li $v0, 4la $a0, Message21syscall

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

jal getValueadd $a0, $v0, $zeroli $v0, 1syscall

li $v0, 4la $a0, newlinesyscall

li $v0, 4la $a0, Message31syscall

la $a0, CharPtrjal getAddressadd $a0, $v0, $zeroli $v0, 1syscall

li $v0, 4la $a0, newlinesyscall

#---# Cap phat cho bien con tro, gom 6 phan tu, moi phan tu 1 byte#---

la $a0, BytePtraddi $a1, $zero, 6addi $a2, $zero, 1li $v0, 1sw $v0, 0($a0)li $v0, 4la $a0, Message12syscalljal malloc

li $v0, 4la $a0, Message22syscall

la $a0, BytePtrjal getValueadd $a0, $v0, $zeroli $v0, 1syscall

li $v0, 4la $a0, newlinesyscall

li $v0, 4la $a0, Message32syscall

la $a0, BytePtrjal getAddressadd $a0, $v0, $zero

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

li $v0, 4la $a0, newlinesyscall

#---# Cap phat cho bien con tro, gom 5 phan tu, moi phan tu 4 byte#---

la $a0, WordPtraddi $a1, $zero, 5addi $a2, $zero, 4

li $v0, 4la $a0, Message13syscalljal malloc

li $v0, 4la $a0, Message23syscall

la $a0, WordPtrjal getValueadd $a0, $v0, $zeroli $v0, 1syscall

li $v0, 4la $a0, newlinesyscall

li $v0, 4la $a0, Message33syscall

la $a0, WordPtrjal getAddressadd $a0, $v0, $zeroli $v0, 1syscall

li $v0, 4la $a0, newlinesyscall

# Question 4: Copy hai con tro#---li $v0, 4

#---la $a0, Message4syscall

la $a0, CharPtr li $v0, 1syscall

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

la $a0, Spacesyscall

la $a0, CharPtrla $a1, CpyCharPtrjal CopyPointeradd $a1,$a1,$zeroli $v0, 1syscall

li $v0, 4la $a0, newlinesyscall

#Question 5: Tinh tong bo nho su dung#---

#---li $v0, 4la $a0, Message5syscall

jal CalculateMemoryli $v0,1syscallli $v0, 4la $a0, Spacesyscalljal CalculateMemory2li $v0,1syscall

li $v0, 4la $a0, newlinesyscall

#---# Cap phat cho mang con tro word 2 chieu, gom 5 dong, 5 cot moi phan tu 4 byte#---

la $a0, ArrayWordPtrla $a1, MaxDonglw $a1,0($a1)la $a2, MaxCotlw $a2, 0($a2)jal malloc2

li $v0, 4la $a0, Message6syscall

jal CalculateMemoryli $v0,1syscallli $v0, 4la $a0, Space

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

jal CalculateMemory2li $v0,1syscall

li $v0, 4la $a0, newlinesyscall

li $v0, 4la $a0, Message71syscall

li $v0, 1007la $a0, ArrayWordPtrli $a1,3la $s0, MaxDonglw $s0, 0($s0)bge $a1, $s0, exitli $a2, 3la $s0, MaxCotlw $s0, 0($s0)bge $a2, $s0, exitjal SetArrayAtli $v0, 1syscall

li $v0, 4la $a0, newlinesyscall

li $v0, 4la $a0, Message72syscall

la $a0, ArrayWordPtrli $a1,3la $s0, MaxDonglw $s0, 0($s0)bge $a1, $s0, exitli $a2, 3la $s0, MaxCotlw $s0, 0($s0)bge $a2, $s0, exitjal GetArrayAtadd $a0,$v0,$zeroli $v0, 1syscall

li $v0, 4la $a0, newlinesyscalllock:j lock

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

# Ham khoi tao cho viec cap phat dong

#---# @param khong co

# @detail Danh dau vi tri bat dau cua vung nho co the cap phat duoc#---SysInitMem:

la $t9, Sys_TheTopOfFree #Lay con tro chua dau tien con trong, khoi taola $t7, Sys_MyFreeSpace #Lay dia chi dau tien con trong, khoi tao

jr $ra

# Ham cap phat bo nho dong cho cac bien con tro

#---# @param [in/out] $a0 Chua dia chi cua bien con tro can cap nhat

duoc

# @param [in] $a2 Kich thuoc 1 phan tu, tinh theo byte

#---la $t9, Sys_TheTopOfFree

lw $t8, 0($t9) #Lay dia chi dau tien con trongsub $t3,$t3,$t8

li $v0, 1add $a0, $t8, $zerosyscall

li $v0, 4la $a0, SpacesyscallcheckDevide4:

li $t4, 4div $t8, $t4mfhi $t5beq $t5, $zero, doneaddi $t8, $t8,1j checkDevide4 done:

add $t3, $t8, $t3

li $v0, 1add $a0, $t8, $zerosyscall

li $v0, 4la $a0, newlinesyscall

sb $t8, 0($a0) #Cat dia chi do vao bien con troaddi $v0, $t8, 0 #Dong thoi la ket qua tra ve cua hammul $t7, $a1, $a2 #Tinh kich thuoc cua mang can cap nhatadd $t0, $t0, $t7

add $t3, $t3, $t7

add $t6, $t8, $t7 #Tinh dia chi dau tien con trong

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Sys_TheTopOfFreejr $ra

#---# Ham lay gia tri cua bien con tro

#---# @param [in] $a0 Chua dia chi cua bien con tro can lay gia tri

#---getValue:lw $v0, 0($a0)jr $ra

#---# Ham lay dia chi cua bien con tro

#---# @param [in] $a0 Chua dia chi cua bien con tro can lay dia chi

#---getAddress:add $v0, $zero, $a0jr $ra

#---# Ham Copy 2 con tro xau ki tu

#---# @param [in] $a0 Chua dia chi cua bien con tro nguon# [in] $a1 Chua dia chi cua bien con tro dich#---CopyPointer:

sw $a0, 0($a1)jr $ra

#---#Khong tinh phan nhay coc dia chiCalculateMemory:

add $a0, $zero, $t0jr $ra

#Khong tinh phan nhay coc dia chiCalculateMemory2:add $a0, $t3, $zerojr $ra

# Ham cap phat bo nho dong cho cac bien con tro

#---la $t9, Sys_TheTopOfFree

</div>

×