2011年3月1日

摘要: GCC 支持在C/C++代码中嵌入汇编代码,这些汇编代码被称作GCC Inline ASM——GCC内联汇编。这是一个非常有用的功能,有利于我们将一些C/C++语法无法表达的指令直接潜入C/C++代码中,另外也允许我们直接写 C/C++代码中使用汇编编写简洁高效的代码。1.基本内联汇编GCC中基本的内联汇编非常易懂,我们先来看两个简单的例子:__asm__("movl %esp,%eax"); // 看起来很熟悉吧!或者是__asm__("movl $1,%eax // SYS_exitxor %ebx,%ebxint $0x80");或__asm__( 阅读全文
posted @ 2011-03-01 22:02 yming0221 阅读(523) 评论(0) 推荐(0)
摘要: __asm__ __volatile__内嵌汇编用法简述 在阅读C/C++原码时经常会遇到内联汇编的情况,下面简要介绍下__asm__ __volatile__内嵌汇编用法。因为我们华清远见教学平台是ARM体系结构的,所以下面的示例都是用ARM汇编。带有C/C++表达式的内联汇编格式为:__asm__ __volatile__("Instruction List" : Output : Input : Clobber/Modify);其中每项的概念及功能用法描述如下:1、 __asm____asm__是GCC 关键字asm 的宏定义:#define __asm__ asm_ 阅读全文
posted @ 2011-03-01 20:32 yming0221 阅读(336) 评论(0) 推荐(0)
摘要: 主要描述boot/目录中的三个汇编代码文件,见列表3-1所示。正如在前一章中提到的,这三个文件虽然都是汇编程序,但却使用了两种语法格式。bootsect.s和setup.s采用近似于Intel的汇编语言语法,需要使用Intel8086汇编编译器和连接器as86和ld86,而head.s则使用GNU的汇编程序格式,并且运行在保护模式下,需要用GNU的as进行编译。这是一种AT&T语法的汇编语言程序。使用两种编译器的主要原因是由于对于Intelx86处理器系列来讲,GNU的编译器仅支持i386及以后出的CPU。不支持生成运行在实模式下的程序。阅读这些代码除了你需要知道一些一般8086汇编语 阅读全文
posted @ 2011-03-01 13:12 yming0221 阅读(325) 评论(0) 推荐(0)

导航