Asas Kejuruteraan Balikan & Analisis Binari · Pelajaran

Operasi Daftar dan Memori

Fahami cara daftar digunakan untuk menyimpan data dan cara arahan berinteraksi dengan lokasi memori.

Pelajaran 2 daripada 411 langkah

Operasi Daftar dan Memori ialah pelajaran Asas Kejuruteraan Balikan & Analisis Binari percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Asas Kejuruteraan Balikan & Analisis Binari, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Asas Kejuruteraan Balikan & Analisis Binari merangkumi sejumlah 4 pelajaran.

Daftar dan Memori: Ruang Kerja CPU

Dalam kejuruteraan songsang, memahami cara CPU menggunakan daftar dan memori adalah asas yang penting. Anggaplah kedua-duanya sebagai kawasan storan jangka pendek dan jangka panjang CPU.

  • Daftar ialah unit storan kecil yang sangat pantas dan terletak terus di dalam CPU.
  • Memori (seperti RAM) ialah kawasan storan yang lebih besar tetapi lebih perlahan di luar CPU, tempat program dan data berada.

Kita akan meneroka cara arahan Assembly memindahkan data antara lokasi-lokasi penting ini.

Daftar CPU: Dalaman dan Pantas

Daftar ialah cara paling pantas untuk CPU mengakses data. Daftar menyimpan nilai yang sedang dikendalikan oleh CPU, seperti hasil pengiraan perantaraan atau alamat memori.

Seni bina yang berbeza (seperti x86, x64 dan ARM) mempunyai set daftar yang berbeza, tetapi tujuannya serupa: menyediakan akses pantas kepada data untuk pengiraan.

Daftar Tujuan Umum x86/x64

Bagi seni bina x86/x64, anda akan sering menemui daftar tujuan umum yang digunakan untuk pelbagai tugas. Walaupun peranannya boleh berbeza, sesetengah daftar mempunyai penggunaan lazim:

  • RAX/EAX: Selalunya digunakan untuk nilai pulangan daripada fungsi.
  • RBX/EBX: Daftar tujuan umum.
  • RCX/ECX: Selalunya digunakan sebagai pembilang dalam gelung.
  • RDX/EDX: Boleh digunakan untuk argumen atau data.

Ingat, awalan 'R' (contohnya, RAX) menandakan versi 64-bit, manakala 'E' (contohnya, EAX) menandakan versi 32-bit.

Arahan `MOV`: Memindahkan Data

Arahan MOV (move) ialah salah satu arahan paling asas dalam Assembly. Arahan ini menyalin data daripada sumber ke destinasi. Sumber boleh berupa nilai segera, daftar atau lokasi memori. Destinasi boleh berupa daftar atau lokasi memori (tetapi bukan memori ke memori secara terus).

Mari kita lihat contoh C yang secara konseptual sepadan dengan operasi daftar.

#include <stdio.h>

int main() {
  int value1 = 100;
  int value2 = 200;
  int sum = value1 + value2;
  printf("Sum: %d\n", sum);
  return 0;
}

Memahami Memori

Selain daftar, program memerlukan storan yang lebih besar: memori. Di sinilah kod, pemboleh ubah dan struktur data anda sebenarnya berada apabila tidak sedang diproses oleh CPU.

Memori disusun sebagai susunan besar bait, dan setiap bait mempunyai alamat unik. CPU menggunakan alamat ini untuk mencari dan mengakses bahagian data tertentu.

  • Anggap alamat memori seperti nombor rumah di sepanjang jalan.
  • Setiap bait ialah "kotak storan" kecil pada alamat tertentu.

Cara Mencari Data: Mod Pengalamatan

Untuk mengakses data dalam memori, Assembly menggunakan pelbagai mod pengalamatan. Mod ini ialah cara yang berbeza untuk mengira alamat memori tepat yang diperlukan oleh sesuatu arahan.

  • Pengalamatan Terus: Alamat dinyatakan secara jelas (contohnya, [0x12345678]).
  • Pengalamatan Tidak Langsung Daftar: Alamat disimpan dalam daftar (contohnya, [EAX]).
  • Pengalamatan Asas + Indeks: Menggabungkan daftar asas dengan daftar indeks (contohnya, [EBX + ESI]).
  • Asas + Indeks + Anjakan: Menambahkan ofset pemalar (anjakan) kepada asas dan indeks (contohnya, [EBP + ESI + 0x10]).

Mod ini penting untuk mengakses tatasusunan, struktur dan parameter fungsi.

Mendapatkan Data: Daftar <- Memori

Untuk menggunakan data yang disimpan dalam memori, CPU perlu memuatkannya terlebih dahulu ke dalam daftar. Arahan MOV sekali lagi digunakan untuk tujuan ini, tetapi kali ini alamat memori menjadi sumber.

Dalam Assembly, kurungan siku [] biasanya menandakan akses memori. Contohnya, [EAX] bermaksud "nilai pada alamat memori yang sedang disimpan dalam daftar EAX".

#include <stdio.h>

int main() {
  int data = 42;
  int result;

  // Imagine 'data' address is loaded into a register, then its value is fetched
  result = data;

  printf("Result: %d\n", result);
  return 0;
}

Menyimpan Data: Memori <- Daftar

Selepas CPU memproses data dalam daftarnya, CPU biasanya perlu menyimpan hasilnya kembali ke dalam memori. Proses ini juga dilakukan menggunakan arahan MOV, tetapi kali ini alamat memori menjadi destinasi.

Memahami operasi memuatkan (membaca) dan menyimpan (menulis) ini penting untuk menjejaki pelaksanaan program dan manipulasi data semasa kejuruteraan songsang.

#include <stdio.h>

int main() {
  int x = 5;
  int y = 10;
  int *ptr = &x;

  // Imagine y's value (in a register) is moved to where ptr points (memory address of x)
  *ptr = y;

  printf("x is now: %d\n", x);
  return 0;
}

Tindanan: Storan Sementara

Satu kawasan memori yang istimewa ialah tindanan. Tindanan digunakan untuk storan sementara, seperti argumen fungsi, pemboleh ubah setempat dan alamat pulangan. Tindanan beroperasi berdasarkan prinsip "Masuk Terakhir, Keluar Dahulu" (LIFO), seperti susunan pinggan.

  • PUSH: Menambahkan data ke bahagian atas tindanan.
  • POP: Mengeluarkan data dari bahagian atas tindanan.

Daftar Penuding Tindanan (RSP/ESP) sentiasa menunjuk ke bahagian atas tindanan semasa.

Semak Pemahaman Anda

Masa untuk semakan ringkas tentang daftar dan memori!

Daftar dan Memori: Kesimpulan Utama

Kita telah membincangkan peranan penting daftar dan memori dalam Assembly serta kejuruteraan songsang:

  • Daftar ialah storan dalaman CPU yang paling pantas dan menyimpan data untuk pemprosesan segera.
  • Memori (RAM) menyediakan storan yang lebih besar dan disusun mengikut alamat unik.
  • Arahan MOV penting untuk memindahkan data antara daftar dan memori.
  • Mod pengalamatan menentukan cara lokasi memori dikira dan diakses.
  • Tindanan ialah kawasan memori LIFO khas untuk data sementara.

Menguasai konsep ini penting untuk memahami cara program memanipulasi data pada tahap rendah!

Percuma untuk bermula

Pelajari Assembly dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Operasi Daftar dan Memori” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Asas Kejuruteraan Balikan & Analisis Binari, termasuk “Operasi Daftar dan Memori”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Asas Kejuruteraan Balikan & Analisis Binari merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Operasi Daftar dan Memori”?

Fahami cara daftar digunakan untuk menyimpan data dan cara arahan berinteraksi dengan lokasi memori. Anda berlatih Asas Kejuruteraan Balikan & Analisis Binari menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Asas Kejuruteraan Balikan & Analisis Binari?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Asas Kejuruteraan Balikan & Analisis Binari di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Operasi Daftar dan Memori” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Asas Kejuruteraan Balikan & Analisis Binari ini?

Ya. Setiap pelajaran Asas Kejuruteraan Balikan & Analisis Binari menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Asas Assembly x86/x64
  2. Operasi Daftar dan Memori
  3. Aliran Kawalan dan Panggilan Fungsi
  4. Tindanan dan Konvensyen Panggilan
← Kembali ke Asas Kejuruteraan Balikan & Analisis Binari