博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

嵌入式linux

构建完善的嵌入式linux平台
   uClinux.cublog.cn
关于作者  
姓名:panhuachun@hotmail.com
职业:软件工程师
年龄:24
位置:China
个性介绍:构建优美的嵌入式平台

我的分类  




arm平台x86平台内嵌汇编
//x86平台 x86指令集,intel风格test.c
#include <stdio.h>
int add(void) {
    long eax=4;
    long ebx=2;
   __asm__ __volatile__ ("addl %1, %0"
            : "=b"((long)ebx)
            : "a"((long)eax), "b"((long)ebx)
            : "1"
            );
 
   printf("ebx=%d\n", ebx);
   return 0;
  
}
int main(){
    int a=12;
    char *hello="hello,world\n";
    __asm__(
            ".intel_syntax noprefix\n"
            "mov eax,4\n"
            "mov ebx,1\n"
            "mov ecx,%0\n"
            "mov edx,%1\n"
            "int 0x80\n"
            ".att_syntax\n"
            :
            :"r"(hello),"r"(a)
            :"eax","ebx","ecx","edx"
    );
    add();
    exit(0);
}
-------------------------------------------------
//x86平台 x86指令集 ,at&t风格test.c
#include<stdio.h>
int sum(int a, int b)                                
{                                             
 int r;
        __asm__(
 "sub $0x4, %%esp\n"
 "movl 0xc(%%ebp), %%eax\n"
 "addl 0x8(%%ebp),%%eax\n"
 " movl %%eax, 0xfffffffc(%%ebp)\n"
 " movl 0xfffffffc(%%ebp), %%eax\n"
 " movl %%eax, %%eax\n"
  : "=a"(r)
  );                         
      return r;                             
}
int main()
{
        int x = sum(10,2);
        printf("x = %d\n", x);
        return 0;
}

gcc -o test test.c
-------------------------------------------------
//arm 平台,用arm平台的指令集 ,test.c

int main()
{
 //printf("starting...\n");
 //直接内嵌汇编
     __asm__(
            "ldr r0,  =0x30000000\n"//别忘记加个等号
            "mov r1,#1\n"
            "str    r1,[r0]\n"
            );

}
arm-linux-gcc -o test test.c

 发表于: 2008-03-05,修改于: 2008-03-05 18:25 已浏览143次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:3.42399

京ICP证041476号