Lihat Pertama pada contoh ini:
Kode C untuk program C sederhana diberikan di bawah ini
struct Foo {
char a;
int b;
double c;
} foo1,foo2;
void foo_assign(void)
{
foo1 = foo2;
}
int main(/*char *argv[],int argc*/)
{
foo_assign();
return 0;
}
Kode ASM Setara untuk foo_assign () adalah
00401050 <_foo_assign>:
401050: 55 push %ebp
401051: 89 e5 mov %esp,%ebp
401053: a1 20 20 40 00 mov 0x402020,%eax
401058: a3 30 20 40 00 mov %eax,0x402030
40105d: a1 24 20 40 00 mov 0x402024,%eax
401062: a3 34 20 40 00 mov %eax,0x402034
401067: a1 28 20 40 00 mov 0x402028,%eax
40106c: a3 38 20 40 00 mov %eax,0x402038
401071: a1 2c 20 40 00 mov 0x40202c,%eax
401076: a3 3c 20 40 00 mov %eax,0x40203c
40107b: 5d pop %ebp
40107c: c3 ret
Seperti yang Anda lihat bahwa tugas hanya diganti dengan instruksi "mov" dalam perakitan, operator penugasan berarti memindahkan data dari satu lokasi memori ke lokasi memori lain. Tugas hanya akan melakukannya untuk anggota langsung dari suatu struktur dan akan gagal untuk menyalin ketika Anda memiliki tipe data kompleks dalam suatu struktur. Di sini COMPLEX berarti Anda tidak dapat memiliki array pointer, menunjuk ke daftar.
Array karakter dalam struktur itu sendiri tidak akan berfungsi pada kebanyakan kompiler, ini karena tugas hanya akan mencoba untuk menyalin tanpa melihat tipe data menjadi tipe kompleks.