2.2.1内嵌汇编
发布时间:2020-12-14 00:01:41 所属栏目:Linux 来源:网络整理
导读:内容来源于《庖丁解牛Linux内核分析》-孟宁等 ??|-- 第2章操作系统是如何工作的 ????|--2.2借助Linux内核部分源代码模拟存储程序计算机工作模型及时钟中断 ??????|--2.2.1内嵌汇编 有修改,大部分一样 C语言内嵌汇编语法如下: __asm__ __volatile__ ( 汇编
内容来源于《庖丁解牛Linux内核分析》-孟宁等
C语言内嵌汇编语法如下: __asm__ __volatile__ ( 汇编代码 输出部分 输入部分 破坏性描述部分(可以省略) ); 下面通过一个简单的例子来熟悉内嵌汇编的语法规则 #include <stdio.h> int main() { /* val1+val2=val3 */ unsigned int val1 = 1; unsigned int val2 = 2; unsigned int val3 = 0; printf("val1:%d,val2:%d,val3:%dn",val1,val2,val3); asm volatile( "movl $0,%%eaxnt" /* clear %eax to 0 */ "addl %1,%%eaxnt" /* %eax += val1 */ "addl %2,%%eaxnt" /* %eax += val2 */ "movl %%eax,%0nt" /* val2 = %eax */ : "=m" (val3) /* output =m mean only write output memory variable */ : "c" (val1),"d" (val2) /* input c or d mean %ecx/%edx */ ); printf("val1:%d+val2:%d=val3:%dn",val3); return 0; } 这个例子是用汇编代码是想
因此,可以把这个模型的内嵌汇编看成是一个函数,第一部分是函数体,第二部分是返回值,第三部分是参数列表。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |