Monday, 17 December 2012

MIPS Simulator: memory allocation, data alignment and register

MEMOYR ALLOCATION
MIPS processors membahagikan kepada tiga bahagian iaitu text segment, data segment, dan stack segment.
  • TEXT SEGMENT
Segmen ini adalah mengendalikan bahasa mesin kod untuk bagi arahan dalam fail yang sumber program.
  • DATA SEGMENT
Segmen ini adalah mengendalikan data apabila program operasi. Ia akan memisahkan dua bahagian untuk proses. Bahagian pertama adalah data statik mengandungi data yang statik diperuntukkan saiz yang tidak berubah sebagai program mengakses mereka. Data yang dinamik adalah satu data statik yang atas. Data ini diperuntukkan dan "deallocated" oleh program melaksanakan.
  • STACK SEGMENT
Segmen ini akan membantu pengguna untuk tinggal ruangan alamat. Apabila ia berada dalam bahasa program yang tahap tinggi, pembolehubah tempatan dan parameter akan memuncul dan menolak saham untuk mengembangkan sistem operasi dan mengecut segmen saham kepada segmen data. Ia juga mempertimbangkan satu cara untuk menukar bahasa sebelum memasukkan bahagian segmen data.
Memory Layout

DATA ALIGNMENT



TYPE
SIZE(BINARY)
SIZE(HEXADECIMAL)
Byte
8 bits
e.g. 10011001
2 bits
e.g. 2A
Word
4 bytes, 32 bits
e.g. 1000000000…
8 bits
e.g. 12345ABC
Double word
8 bytes, 64 bits
e.g. 10000000000000…
16 bits
e.g. 123456789ABCDEF0
Data alignment in MIPS
Double word
Word
Word
HalfWord
HalfWord
HalfWord
HalfWord
byte
byte
byte
byte
byte
byte
byte
byte
Data Alignment

REGISTERS
MIPS mengandungi 32 register yang dinomborkan sebagai 0-31.
REGISTER NAME
(MNEMONIC NAME)
REGISTER NUMBER
USAGE
$zero
$0
Constant 0
$at
$1
Assembler Temporary (reserved)
$v0-$v1
$2-$3
Expression evaluation and results of a subroutine
$a0-$a3
$4-$7
Arguments to a subroutine
$t0-$t7
$8-$15
Temporary (As caller - saved registers for hold a temporary values, no preserved in function call)
$s0-$s7
$16-$23
Saved temporary (As caller - saved register for hold long-lived value, preserved in function call)
$t8-$t9
$24-$25
More temporary to used
$k0 - $k1
$26 - $27
Operating system (For reserved, no used by user program or compiler)
$gp
$28
Global pointer (Points in middle of a 64K block of memory, static data segment, preserved on call)

$sp
$29
Stack pointer (Points of last location on stack, preserved on call)
$fp
$30
Frame pointer (preserved on call)
$ra
$31
Return address (automatically used in some instructions)

MIPS register conventions

Selain itu, Coprocessor 0 mengandungi pengecualian daftar kawalan untuk tujuan dalam pengecualian. SPIM tidak ada melaksanakan daftar dalam semua Coprocessor 0 kerana mereka tidak sentiasa berguna atau terjejas dalam simulator atau sebahagian daripada sistem memori. Walau bagaimanapun, ia juga menyediakan perangkap mendaftar untuk membantu dalam coprocessor.
NAMA PENDAFTARAN
NOMBOR PENDAFTARAN
PENGGUNAAN
BadVAddr
8
Alamat ingatan berlaku pengecualian alamat
Status
12
Mengganggu topeng dan mengaktifkan bit
Cause
13
Jenis pengecualian dan menunggu bit sampukan
EPC
14
Alamat arahan yang disebabkan pengecualian
Trap Register
Pendaftaran ini adalah salah satu pendaftaran menetapkan diakses oleh arahan sebahagian kopemproses daripada mfc0 dan mtc0.
 
 
15                     8
 
4
 
1
0
 
Interrupt Mask
 
U
M
 
E
L
I
E
Status Register
 
31
 
15                         8
 
6                       2
 
B
D
 
Pending Interrupt
 
Exception Code
 
Cause RegisterBit yang menunjukkan status pendaftaran melaksanakan SPIM. Topeng sampukan akan memegang bit bagi setiap selepas 8 tahap sampukan. Jika ia hanya perlu bit, sampukan adalah dapat berfungsi. Walau bagaimanapun, jika ia terdapat sifar bit, sampukan tidak dibenarkan. User mode(UM) bit ialah 0 bermakna program ini dijalankan dalam mode kernel dan UM ialah 1 bit bermakna program ini pergi ke user mode. Exception level (EL) biasanya adalah pada 0 dan hanya akan berubah kepada 1 apabila pengecualian berjalan. Interrupt Enable  (IE) ialah menjadi 1 bit, tahap sampukan adalah membenarkan dan sampukan tidak dibenarkan apabila ia menjadi 0.
 
Lapan bit dalam menunggu sampukan bermakna ia mempunyai 8 sampukan tahap. Bit menjadi 1, ia menunjukkan sampukan adalah proses tetapi tidak mempunyai perkhidmatan. Walau bagaimanapun bit menjadi 0, ia menunjukkan sampukan tidak membenarkan. Bit kod terkecuali mengandungi senarai kod.
 
NOMBOR
NAMA
PUNCA PENGECUALIAN
0
Int
Interrupt (hardware)
4
AdEL
Address error exception (load or instruction fetch)
5
AdES
Address error exception (store)
6
IBE
Bus error on instruction fetch
7
DBUS
Bus error on data load or store
8
SYSCALL
Syscall exception
9
BKPT
Breakpoint exception
10
RI
Reversed instruction exception
12
OVF
Arithmetic overflow exceotion
13
Tr
Trap
Exception code register


No comments:

Post a Comment