renlong0829 2016-03-13 16:43
浏览 1777

Gcc编译的时候为什么用movzbl不用movb指令?

C代码如下

void proc( char a, char* pa)
{
    *pa +=a;
}

GCC编译得到的汇编指令如下

  proc:
1        pushl   %ebp
2        movl    %esp, %ebp
3        movl    12(%ebp), %eax
4        movzbl  8(%ebp), %edx
5        addb    %dl, (%eax)
6        popl    %ebp
7        ret 

其中第4行是从栈里面取出参数a放到eax寄存器。
按照mov指令的用法,这里理论上可以用

movb 8(%ebp), %dl 

为什么GCC不这样生成呢?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题