第一个嵌入汇编的C程序


  最近两天开始学习linux内核,看了赵炯博士的《linux内核完全注释》感觉受益匪浅。今天看到第三章 嵌入汇编部分,于是写了一个小程序试验了一下,用gcc编译通过。代码如下:

#include<stdio.h><stdlib.h><.h>** StrCopy(array *a1,array *
    register  *,a1->,a2->(a1->size>a2->->chlist=(*)malloc(a1->size*(->size=a1->             
            
                
                    
                    
                    
                    
                        
                
        :(a2->chlist),(a1->chlist),(a1-> main(*=l2.chlist==l2.size===strlen(l1.chlist)+
          str=StrCopy(&l1,& 

实现了字符串的拷贝。

开始的时候汇编部分最后一行写法如下:

:,,,

编译出错:

StrCopy.c::: 错误: can’t find a register   ‘CREG’ :: 错误: ‘asm’操作数中有不可能的约束

在网上查了一下原因,从一篇博文中得知:"edi","esi","ecx" 已经在输入列表中给出,会被修改寄存器列表再次给出,gcc就会报错。修改后编译通过。

 

 

 

 

 

相关内容