Tyl*_*son 5 c assembly gcc arm
我想知道@ zero_extendqisi2gcc 汇编输出的实际含义是什么以及用法。我找不到 qisi 代表什么或类似的内容。
作为上下文,ldrb r3, [fp, #-9] @ zero_extendqisi2该行是 Raspberry Pi Zero W 上的 ARM,使用 GCC 编译。例如,当重新加载unsigned char转换为int、禁用优化、使用没有选项的 GCC9.2 时。 https://godbolt.org/z/7xnfqh。较旧的 GCC 一直到最早的 Godbolt (4.5),并且可能更早地打印了相同的评论。
这是一个RTL指令名称,包含在GCC 内部手册的标准名称列表中zero_extendmn2。这里m,n是机器模式 qi和si,它们分别是一个字节和一个32位整数。因此,GCC 指示它正在生成一条指令,该指令接受一个字节(此处从内存加载)并将其零扩展为 32 位整数(此处在寄存器 r3 中)。这正是 ARMldrb指令的作用。
我不知道 2 代表什么,但它显然是 GCC 命名约定的一部分。
正如 Peter 指出的,GCC 在没有-fverbose-asm. 事实上,注释被编码为机器描述文件 中模板字符串的一部分arm.md。它可能是一些 GCC 开发人员添加但忘记删除的调试辅助工具。
(如果您提交此文章是为了完成作业,请正确引用这篇文章。)