Membahas Pertanyaan
12.1 Apa elemen khas dari instruksi mesin?
12.2 Apa jenis lokasi dapat menahan sumber dan tujuan operan?
12.3 Jika instruksi berisi empat alamat, apa yang mungkin menjadi tujuan setiap alamat?
12.4 Daftar dan menjelaskan secara singkat lima set instruksi masalah desain penting.
12.5 Apa jenis operan yang khas di set instruksi mesin?
12.6 Apa hubungan antara kode karakter IRA dan desimal dikemas perwakilan?
12.7 Apa perbedaan antara pergeseran aritmatika dan pergeseran logis?
12.8 Mengapa transfer instruksi kontrol yang dibutuhkan?
12.9 Daftar dan menjelaskan secara singkat dua cara umum menghasilkan kondisi yang akan diuji dalam instruksi cabang bersyarat.
12.10 Yang dimaksud dengan bersarang jangka prosedur?
12.11 Daftar tiga tempat yang mungkin untuk menyimpan alamat kembali untuk kembali prosedur.
12.12 Apa adalah prosedur reentrant?
12.13 Apa notasi Polish terbalik?
12.14 Apa perbedaan antara endian besar dan endian kecil?
Penyelesaian
12.1 Tampilkan dalam notasi hex:
a. format desimal dikemas selama 23
b. Karakter ASCII 23
12.2 Untuk setiap angka desimal dikemas berikut, menunjukkan nilai desimal:
a. 0111 0011 0000 1001
b. 0101 1000 0010
c. 0100 1010 0110
12.3 Sebuah mikroprosesor diberikan memiliki kata-kata dari 1 byte. Apa yang terkecil dan terbesar bilangan bulat yang dapat diwakili dalam representasi berikut:
a. unsigned
b. Tanda-besaran
c. pelengkap yang
d. berpasangan melengkapi
e. Unsigned desimal dikemas
f. Menandatangani desimal dikemas
12.4 Banyak prosesor menyediakan logika untuk melakukan aritmatika pada angka desimal dikemas.
Meskipun aturan untuk aritmatika desimal adalah sama dengan yang untuk operasi biner,
hasil desimal mungkin memerlukan beberapa koreksi ke angka individu jika biner
logika digunakan. Pertimbangkan penambahan desimal dari dua nomor unsigned. Jika setiap nomor terdiri N digit, maka ada bit 4N di setiap nomor. Dua angka yang akan ditambahkan
menggunakan penambah biner. Menyarankan aturan sederhana untuk memperbaiki hasilnya. melakukan penambahan dalam mode ini pada nomor 1698 dan 1786.
12.5 puluhan pelengkap dari nomor desimal X didefinisikan sebagai 10N - X, di mana N
adalah jumlah digit desimal di nomor tersebut. Menggambarkan penggunaan pelengkap sepuluh ini
representasi untuk melakukan pengurangan desimal. Menggambarkan prosedur dengan mengurangkan
(0326) 10 dari (0736) 10.
12.6 Bandingkan mesin nol, satu, dua, dan tiga alamat dengan menulis program untuk menghitung
X = (A + B * C)> (D - E * F)
untuk masing-masing empat mesin. Petunjuk tersedia untuk digunakan adalah sebagai berikut:
12.7 Pertimbangkan komputer hipotetis dengan set instruksi dari hanya dua instruksi n-bit.
Bit pertama menentukan opcode, dan bit sisanya menentukan salah satu 2n-1 n-bit kata-kata dari memori utama. Dua instruksi adalah sebagai berikut:
SUBS X Kurangi isi lokasi X dari akumulator, dan menyimpan mengakibatkan lokasi X dan akumulator.
JUMP alamat X Tempat X dalam program counter.
Sebuah kata dalam memori utama mungkin berisi baik instruksi atau bilangan biner di
notasi komplemen berpasangan. Menunjukkan bahwa instruksi repertoar ini cukup
menyelesaikan dengan menentukan bagaimana operasi berikut dapat diprogram:
a. Transfer data: Lokasi X untuk akumulator, akumulator ke lokasi X
b. Selain itu: Tambahkan isi lokasi X untuk akumulator
c. cabang bersyarat
d. logis OR
e. I / O Operasi
12.8 Banyak set instruksi berisi instruksi NOOP, yang berarti tidak ada operasi, yang memiliki
tidak berpengaruh pada keadaan prosesor selain incrementing program counter. Menyarankan
beberapa penggunaan dari instruksi ini.
12.9 Dalam Bagian 12.4, dinyatakan bahwa kedua pergeseran aritmatika kiri dan pergeseran kiri logis sesuai dengan perkalian dengan 2 ketika tidak ada overflow, dan jika overflow terjadi,
aritmatika dan logis operasi pergeseran meninggalkan menghasilkan hasil yang berbeda, tapi aritmetik pergeseran kiri mempertahankan tanda nomor. Menunjukkan bahwa pernyataan ini benar
untuk 5-bit berpasangan melengkapi bilangan bulat.
12.10 Dalam hal apa yang nomor bulat menggunakan shift kanan aritmatika (misalnya, putaran arah +?, putaran ke - ?, menuju nol, jauh dari 0)?
12.11 Misalkan tumpukan akan digunakan oleh prosesor untuk mengatur panggilan prosedur dan kembali. Dapat program counter dihilangkan dengan menggunakan bagian atas tumpukan sebagai program melawan?
12.12 Arsitektur x86 termasuk instruksi disebut Decimal Adjust setelah Penambahan (DAA). DAA melakukan urutan berikut petunjuk:
if ((AL DAN 0Fh)> 9) OR (AF = 1) maka
AL d AL + 6;
AF d 1;
lain
AF d 0;
berakhir jika;
jika (AL> 9FH) OR (CF = 1) maka
AL d AL + 60H;
CF d 1;
lain
CF d 0;
berakhir jika. "H" menunjukkan heksadesimal. AL adalah 8-bit register yang menyimpan hasil penambahan dua 8-bit unsigned integer. AF bendera diatur jika ada carry dari bit 3 ke bit 4 di
Hasil tambahan. CF adalah bendera diatur jika ada carry dari bit 7 sampai bit 8. Jelaskan
fungsi yang dilakukan oleh instruksi DAA.
12.13 The x86 Bandingkan instruksi (CMP) mengurangi operan sumber dari tujuan
operan; itu update status flag (C, P, A, Z, S, O) tapi tidak mengubah salah satu dari
operan. CMP instruksi dapat digunakan untuk menentukan apakah operan tujuan
lebih besar dari, sama dengan, atau kurang dari sumber operan.
a. Misalkan dua operan diperlakukan sebagai unsigned integer. Tampilkan yang statusnya
bendera relevan untuk menentukan ukuran relatif dari dua bilangan bulat dan nilai-nilai apa
bendera sesuai dengan yang lebih besar dari, sama dengan, atau kurang dari.
b. Misalkan dua operan diperlakukan sebagai berpasangan melengkapi bilangan bulat ditandatangani.
Tampilkan yang flag status relevan untuk menentukan ukuran relatif dari
dua bilangan bulat dan nilai-nilai dari bendera apa yang sesuai dengan lebih besar dari, sama dengan,
atau kurang dari.
c. CMP instruksi dapat diikuti oleh Jump bersyarat (Jcc) atau Set Kondisi
(SETcc) instruksi, di mana cc mengacu salah satu dari 16 kondisi yang tercantum
pada Tabel 12.12. Menunjukkan bahwa kondisi diuji untuk nomor ditandatangani
perbandingan yang benar.
12.14 Misalkan kita ingin menerapkan x86 CMP instruksi untuk operan 32-bit yang berisi
nomor dalam format floating-point. Untuk hasil yang benar, apa persyaratan memiliki
harus dipenuhi dalam bidang berikut?
a. Posisi relatif dari bidang significand, tanda, dan eksponen.
b. Representasi dari nilai nol.
c. Representasi dari eksponen.
d. Apakah format IEEE memenuhi persyaratan ini? Menjelaskan.
12.15 Banyak instruksi mikroprosesor set termasuk instruksi yang menguji kondisi
dan menetapkan operan tujuan jika kondisi benar. Contoh termasuk SETcc yang
pada x86, yang Scc pada MC68000 Motorola, dan Scond di National
NS32000.
a. Ada beberapa perbedaan antara petunjuk ini:
• SETcc dan Scc beroperasi hanya pada byte, sedangkan Scond beroperasi pada byte, kata,
dan doubleword operan.
• SETcc dan Scond mengatur operan ke integer satu jika benar dan nol jika palsu. Scc
set byte untuk semua orang biner jika benar dan semua nol jika palsu.
Apa keuntungan relatif dan kerugian dari perbedaan ini?
b. Tak satu pun dari petunjuk ini mengatur salah satu bendera kode kondisi, dan dengan demikian eksplisit uji hasil instruksi yang diperlukan untuk menentukan nilainya. Membahas
apakah kode kondisi harus ditetapkan sebagai hasil dari instruksi ini.
c. Sebuah sederhana IF pernyataan seperti IF 7 b THEN dapat diimplementasikan menggunakan
Metode representasi numerik, yaitu, membuat nilai Boolean manifest,
sebagai lawan dari aliran metode kontrol, yang mewakili nilai Boolean sebuah ekspresi dengan titik dicapai dalam program ini. Sebuah compiler mungkin menerapkan IF 7 ssb YANG dengan kode x86 berikut:
SUB CX, CX; mengatur daftar CX ke 0
MOV AX, B, memindahkan isi dari lokasi B untuk mendaftar AX
CMP AX, A; bandingkan isi register AX dan lokasi A
Jle UJI; lompat jika A ... B
INC CX; tambahkan 1 ke isi register CX
UJI JCXZ OUT; melompat jika isi CX sama 0
KEMUDIAN OUT
Hasil (A 7 B) adalah nilai Boolean diadakan di register dan tersedia di kemudian hari,
luar konteks aliran kode hanya ditampilkan. Hal ini nyaman untuk digunakan mendaftar
CX untuk ini, karena banyak cabang dan loop opcodes memiliki tes built-in untuk CX.
Tampilkan implementasi alternatif menggunakan instruksi SETcc yang menyelamatkan
memori dan waktu eksekusi. (Petunjuk: Tidak ada instruksi x86 baru tambahan yang diperlukan,
selain SETcc itu.)
d. Sekarang perhatikan pernyataan bahasa tingkat tinggi:
A: = (B 7 C) OR (D = F)
Sebuah compiler mungkin menghasilkan kode berikut:
MOV EAX, B, memindahkan isi dari lokasi B untuk mendaftar EAX
CMP EAX, C; bandingkan isi register EAX dan lokasi C
MOV BL, 0; 0 mewakili palsu
Jle N1; lompat jika (B ... C)
MOV BL, 1; 1 merupakan salah
N1 MOV EAX, D
CMP EAX, F
MOV BH, 0
JNE N2
MOV BH, 1
N2 OR BL, BH
Tampilkan implementasi alternatif menggunakan instruksi SETcc yang menyelamatkan memori
dan waktu eksekusi.
12.16 Misalkan dua register mengandung nilai-nilai heksadesimal berikut: AB0890C2,
4598EE50. Apa hasil dari menambahkan mereka menggunakan instruksi MMX:
a. untuk byte dikemas
b. untuk kata dikemas
Asumsikan saturasi aritmatika tidak digunakan.
12.17 Lampiran O menunjukkan bahwa tidak ada petunjuk tumpukan berorientasi dalam set instruksi
jika stack akan digunakan hanya oleh prosesor untuk tujuan seperti penanganan prosedur. Bagaimana prosesor dapat menggunakan tumpukan untuk tujuan apapun tanpa petunjuk tumpukan berorientasi?
12.18 Mengkonversi rumus berikut dari terbalik Polandia untuk infiks:
a. AB + C + D *
b. AB / CD / +
c. ABCDE + ** /
d. ABCDE + F / + G - H / * +
12.19 Mengkonversi rumus berikut dari infiks untuk membalikkan Polandia:
a. A + B + C + D + E
b. (A + B) * (C + D) + E
c. (A * B) + (C D *) + E
d. (ABCD EFGH
12.20 Mengkonversi ekspresi A + B - C untuk notasi postfix menggunakan algoritma Dijkstra.
Menunjukkan langkah-langkah yang terlibat. Apakah hasilnya setara dengan (A + B) - C atau A + (B - C)? Apakah itu penting?
12.21 Menggunakan algoritma untuk mengkonversi infiks untuk postfix didefinisikan dalam Lampiran O, menunjukkan
langkah yang terlibat dalam mengkonversi ekspresi Gambar O.3 ke postfix. Gunakan presentasi
mirip dengan Gambar O.5.
12,22 Tampilkan perhitungan ekspresi pada Gambar O.5, menggunakan presentasi yang mirip dengan Gambar O.4.
12.23 Gambar ulang tata letak little-endian pada Gambar 12.13 sehingga byte muncul sebagai bernomor dalam tata letak big-endian. Artinya, acara memori 64-bit baris, dengan byte terdaftar kiri
ke kanan, atas ke bawah.
12.24 Untuk struktur data sebagai berikut, menggambar layout besar-endian dan little-endian, menggunakan
format Gambar 12.13, dan komentar pada hasil.
a. struct {
ganda i; // 0x1112131415161718
} S1;
b. struct {
int i; // 0x11121314
int j; // 0x15161718
} S2;
c. struct {
i singkat; // 0x1112
j singkat; // 0x1314
k singkat; // 0x1516
l singkat; // 0x1718
} S3;
12.25 The IBM Power arsitektur spesifikasi tidak mendikte bagaimana prosesor harus menerapkan
modus little-endian. Ini menentukan hanya pandangan memori prosesor harus memiliki
ketika beroperasi dalam mode little-endian. Ketika mengkonversi struktur data dari big endian
untuk little endian, prosesor bebas untuk menerapkan mekanisme byte-swapping benar atau untuk
menggunakan semacam mekanisme modifikasi alamat. prosesor Daya saat ini adalah semua
bawaan mesin big-endian dan menggunakan modifikasi alamat untuk memperlakukan data sebagai little-endian. Mempertimbangkan struktur s didefinisikan pada Gambar 12.13. Tata letak di kanan bawah porsi angka menunjukkan struktur s seperti yang terlihat oleh prosesor. Bahkan, jika struktur
dikompilasi dalam mode little-endian, tata letak dalam memori ditunjukkan pada Gambar 12.12. Menjelaskan pemetaan yang terlibat, menjelaskan cara mudah untuk menerapkan pemetaan, dan mendiskusikan efektivitas pendekatan ini.
12.26 Tulis program kecil untuk menentukan endianness dari mesin dan melaporkan hasil.
Menjalankan program pada komputer yang tersedia untuk Anda dan menyerahkan output.
12.27 The MIPS prosesor dapat diatur untuk beroperasi baik big-endian atau mode little-endian.
Mempertimbangkan beban Byte Unsigned (LBU) instruksi, yang memuat byte dari memori
ke dalam orde rendah 8 bit register dan mengisi high-order 24 bit register
dengan nol. Deskripsi LBU diberikan dalam manual MIPS referensi menggunakan
daftar transfer bahasa sebagai
mem d LoadMemory (...)
byte d VirtualAddress1..0
jika KONDISI kemudian
GPR [rt] d 024} mem31 - 8 * byte .. 24-8 * byte
lain
GPR [rt] d 024} mem7 + 8 * byte .. 8 * byte
berakhir jika
di mana byte mengacu pada dua low-order bit dari alamat efektif dan mem mengacu
dengan nilai diambil dari memori. Dalam manual, bukan KONDISI kata,
salah satu dari dua kata berikut digunakan: BigEndian, LittleEndian. Yang kata digunakan?
12.28 Sebagian besar, tapi tidak semua, prosesor menggunakan besar- atau little-endian bit memesan dalam byte yang konsisten dengan memesan besar- atau little-endian byte dalam skalar multibyte. Mari kita mempertimbangkan Motorola 68030, yang menggunakan big-endian byte pemesanan. Dokumentasi
yang 68.030 mengenai format membingungkan. panduan pengguna menjelaskan bahwa bit yang memesan bidang bit adalah kebalikan dari bit pemesanan bilangan bulat. Sebagian besar operasi bit bidang mengoperasikan dengan satu memesan endian, tetapi lapangan beberapa bit operasi membutuhkan pemesanan berlawanan. Itu berikut penjelasan dari manual pengguna menjelaskan sebagian besar operasi bit bidang:
Sebuah operan bit ditentukan oleh alamat dasar yang memilih satu byte dalam memori
(Basis byte), dan sejumlah bit yang memilih satu bit dalam byte ini. Itu
paling sedikit signifikan sedikit tujuh. Sebuah operan bit bidang ditentukan oleh: (1) basis
alamat yang memilih satu byte dalam memori; (2) bidang bit offset yang menunjukkan
yang paling kiri (base) sedikit bidang bit dalam kaitannya dengan bit yang paling signifikan dari
dasar byte; dan (3) lebar lapangan sedikit yang menentukan berapa banyak bit ke
hak dasar byte di bidang bit. Bit yang paling signifikan dari dasar
bidang bit byte adalah offset 0, bit paling signifikan dari dasar byte adalah bit lapangan
mengimbangi 7.
Apakah petunjuk ini menggunakan big-endian atau little-endian bit pemesanan?
Tidak ada komentar:
Posting Komentar