ARM-elf-gcc的C语言内嵌汇编语言

本文介绍了在使用embest IDE调试S3C44B0时,如何在C语言环境中操作内部寄存器。作者强调了ARM-elf-gcc的内嵌汇编语法与80x86的不同,并分享了经过一天一夜努力后的成功经验。文中给出了错误代码示例,并指出在ADS环境下可能适用的内嵌汇编代码。
摘要由CSDN通过智能技术生成

 在用embest ide调试s3c44b0的时候,想在C环境下操作内部寄存器。查了很多资料可是编译始终通不过。照着书上__ASM格式还是错。后来经过一天一夜的努力,终于实现了,现在传上来大家一起研究一下~~
    网上说的都是80x86的内嵌汇编,跟据那上面的格式来编译是通不过的。还有 arm-elf-gcc和arm-linux-gcc的语法也是不同的。
     刚开始时在网上看到一位仁兄写的调试笔记,他说自己没有钱买仿真器,只可以烧程序。他是用ADS调试的,要想看内部寄存器(R0-R15)级必须读这些寄存器,然后通过串口来观察。但是在C的环境下操作内部寄存器是不可能的,只能在C中内嵌汇编。
    我用的是embest ide ,因为给的例子都是GCC环境下的,所以我就用的这个环境在调,刚开始我把上面那位仁兄的程序COPY过来,完全编译不同,后来我一句一句的删 发现两个环境下的语法完全不同,于是我就到晚上找例子,没什么收获。下面是那位仁兄的代码,在ADS下可能适用(没有测试过)
int ReadPC(int argc, char *argv[])
{
     U32 i;
     U16 j,k;
 __asm
 {
      mov i,R15
 }
 j=i/0x10000;
 k=i%0x10000;
 printf("PC Value = 0x%x /n",i);
 printf("PC Value = %d - %d /n" ,j,k);
 __asm
 {
      MRS i,CPSR
 }
 j=i/0x10000;
 k=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值