typedef struct tagstru
stru;
stru sa;
sa.a = 0x123;
sa.b = 0x456;
sa.c = 0x789;
printf("stru: a=%d b=%d c=%d\n", sa.a, sa.b, sa.c);
__asm__ __volatile__ (
"xorl %%ecx, %%ecx\n\t"
"xorl %%eax, %%eax\n\t"
"movl %%ecx, (%%ebx)\n\t"
"xorl %%edx, %%edx\n\t"
"movl %%eax, 4(%%ebx)\n\t"
"xorl %%ecx, %%ecx\n\t"
"movl %%edx, 8(%%ebx)"
: "=m"(sa)
: "b"(&sa)
: "eax", "ecx", "edx");
printf("clear stru: a=%d b=%d c=%d\n", sa.a, sa.b, sa.c);
反彙編**
:00401558 c74588debc3a12 mov [ebp-78], 00000123
:0040155f bbdebc9a78 mov ebx, 00000789
:00401564 b9debc6a45 mov ecx, 00000456
:00401569 c7458cdebc6a45 mov [ebp-74], 00000456
:00401570 badebc3a12 mov edx, 00000123
:00401575 c74590debc9a78 mov [ebp-70], 00000789
:0040157c 895c240c mov dword ptr [esp+0c], ebx
:00401580 894c2408 mov dword ptr [esp+08], ecx
:00401584 89542404 mov dword ptr [esp+04], edx
:00401588 c7042411905400 mov dword ptr [esp], 00549011
:0040158f e8cc3b0000 call 00405160 ; printf
:00401594 8d5d88 lea ebx, dword ptr [ebp-78]
:00401597 31c9 xor ecx, ecx
:00401599 31c0 xor eax, eax
:0040159b 890b mov dword ptr [ebx], ecx
:0040159d 31d2 xor edx, edx
:0040159f 894304 mov dword ptr [ebx+04], eax
:004015a2 31c9 xor ecx, ecx
:004015a4 895308 mov dword ptr [ebx+08], edx
:004015a7 c7042427905400 mov dword ptr [esp], 00549027
:004015ae 8b4590 mov eax, dword ptr [ebp-70]
:004015b1 8b7d8c mov edi, dword ptr [ebp-74]
:004015b4 8b7588 mov esi, dword ptr [ebp-78]
:004015b7 8944240c mov dword ptr [esp+0c], eax
:004015bb 897c2408 mov dword ptr [esp+08], edi
:004015bf 89742404 mov dword ptr [esp+04], esi
:004015c3 e8983b0000 call 00405160 ; printf
還是多了一條lea指令 GCC內聯彙編
有時為了高效,有時為了直接控制硬體,有些模組我們不得不直接用組合語言來編寫,並且對外提供呼叫的介面,隱藏細節,這其實就是內聯彙編。如何使用內聯彙編?我們就以 gcc 為例,一窺其中奧秘!一 關鍵字 如何讓 gcc 知道 中內嵌的彙編呢?借助 關鍵字!來看下面的例子 asm volatile hlt ...
gcc內聯彙編
有時為了高效,有時為了直接控制硬體,有些模組我們不得不直接用組合語言來編寫,並且對外提供呼叫的介面,隱藏細節,這其實就是內聯彙編。如何使用內聯彙編?我們就以 gcc 為例,一窺其中奧秘!一 關鍵字 如何讓 gcc 知道 中內嵌的彙編呢?借助關鍵字!來看下面的例子 a volatile hlt a 表...
GCC 內聯彙編
有時為了高效,有時為了直接控制硬體,有些模組我們不得不直接用組合語言來編寫,並且對外提供呼叫的介面,隱藏細節,這其實就是內聯彙編。如何使用內聯彙編?我們就以 gcc 為例,一窺其中奧秘!一 關鍵字 如何讓 gcc 知道 中內嵌的彙編呢?借助關鍵字!來看下面的例子 asm volatile hlt a...