C語言變量,常量,運算符組成表達式。
在這裏我寫上幾個重要的表達式以及其彙編代碼。
數字交換
int main(void)
{
int a=1;
int b=0;
int tmp;
tmp=a;
a=b;
b=tmp;
return 0;
}
彙編代碼
.text
.global main
main:
pushl %ebp
movl %esp,%ebp
subl $12,%esp
movl $1,-4(%ebp)
movl $0,-8(%ebp)
movl -4(%ebp),%eax
movl %eax,-12(%ebp)
movl -8(%ebp),%eax
movl %eax,-4(%ebp)
movl -12(%ebp),%eax
movl %eax,-8(%ebp)
movl $0,%eax
leave
ret
大寫轉小寫
int main(void)
{
int ch='A';
ch=ch-'A'+'a';
return 0;
}
彙編代碼
.text
.global main
main:
pushl %ebp
movl %esp,%ebp
subl $4,%esp
movl $'A',-4(%ebp)
movl -4(%ebp),%eax
subl $'A',%eax
addl $'a',%eax
movl %eax,-4(%ebp)
movl $0,%eax
leave
ret
3個字符組成數字
int main(void)
{
int ch1='1';
int ch2='5';
int ch3='6';
int val=0;
val=(ch1-'0')*100;
val+=(ch2-'0')*10;
val+=(ch3-'0');
return 0;
}
彙編代碼
.text
.global main
main:
pushl %ebp
movl %esp,%ebp
subl $16,%esp
movl $'1',-4(%ebp)
movl $'5',-8(%ebp)
movl $'6',-12(%ebp)
movl $0,-16(%ebp)
movl -4(%ebp),%eax
subl $'0',%eax
imull $100,%eax
movl %eax,-16(%ebp)
movl -8(%ebp),%eax
subl $'0',%eax
imull $10,%eax
addl %eax,-16(%ebp)
movl -12(%ebp),%eax
subl $'0',%eax
addl %eax,-16(%ebp)
movl $0,%eax
leave
ret