我編寫了一個程序用XOR交換2個變量。在C程序中解碼程序集輸出
var1 = var1^var2;
var2 = var2^var1;
var1 = var1^var2;
我編譯它與其他
$ gcc Q1.c -save-temps -o Q1
我得到這個輸出在大會形式相處大會輸出...
movl 24(%esp), %edx
movl 28(%esp), %eax
xorl %edx, %eax
movl %eax, 24(%esp)
movl 28(%esp), %edx
movl 24(%esp), %eax
xorl %edx, %eax
movl %eax, 28(%esp)
movl 24(%esp), %edx
movl 28(%esp), %eax
xorl %edx, %eax
我不熟悉x86彙編但我曾參與過ARM組裝。 什麼是數字和這裏的意思?
movl 28(%esp), %edx
movl 24(%esp), %eax
從%esp(堆棧指針)偏移24/28字節 – 2013-05-07 19:06:53
這些看起來像esp(堆棧指針)的偏移量。您通常使用堆棧指針的偏移量來訪問局部變量和參數。堆棧向下增長,因此您通常使用負偏移來訪問參數,而對於局部變量使用正偏移。 – 2013-05-07 19:07:37
「我編寫了一個程序,用XOR交換2個變量。」爲什麼?希望只是檢查大會。 – 2013-05-07 19:07:59