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