摘要:
讨论AT&T的汇编语法,以及GCC的内嵌汇编语法。0.3.2 Syntax1.寄存器引用引用寄存器要在寄存器号前加百分号%,如“movl %eax, %ebx”。80386有如下寄存器:8个32-bit寄存器 %eax,%ebx,%ecx,%edx,%edi,%esi,%ebp,%esp;8个16-bit寄存器,它们事实上是上面8个32-bit寄存器的低16位:%ax,%bx,%cx,%dx,%di,%si,%bp,%sp;8个8-bit寄存器:%ah,%al,%bh,%bl,%ch,%cl,%dh,%dl。它们事实上是寄存器%ax,%bx,%cx,%dx的高8位和低8位;6个段寄存器 阅读全文
摘要:
GCC 内联汇编来源:IBM用汇编编写的程序虽然运行速度快,但开发速度非常慢,效率也很低。如果只是想对关键代码段进行优化,或许更好的办法是将汇编指令嵌入到 C 语言程序中,从而充分利用高级语言和汇编语言各自的特点。但一般来讲,在 C 代码中嵌入汇编语句要比"纯粹"的汇编语言代码复杂得多,因为需要解决如何分配寄存器,以及如何与C代码中的变量相结合等问题。GCC 提供了很好的内联汇编支持,最基本的格式是:__asm__("asm statements");例如:__asm__("nop");如果需要同时执行多条汇编语句,则应该用" 阅读全文