wjp_hz
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2004-09-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2880回复:26

wxl_50685330,帮忙!

楼主#
更多 发布于:2004-08-11 17:24
我用的是evc4.0,想在c中嵌入汇编,但是在__asm{}中使用寄存器r0到r15时,编译出错,说是没有声明这些寄存器,还有arm汇编指令它也不能识别,这是怎么回事呀?
wxl_50685330,帮帮我呀!拜托了!
milkyway1888
驱动牛犊
驱动牛犊
  • 注册日期2006-10-08
  • 最后登录2011-05-07
  • 粉丝1
  • 关注0
  • 积分6分
  • 威望97点
  • 贡献值0点
  • 好评度91点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-10 18:53
我用的X86的CPU,直接在evc里嵌汇编,编译报错 : error C2400: inline assembler syntax error in 'opcode'; found ','
wxl_50685330兄提到在build->configurationg里如何设置?我怎么找不到?
我用的是在PB5.0里自己定制的系统导出的SDK.
请作过的XD们指点下,谢谢!
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-27 17:23
可以,写好后先手动编译成.OBJ,然后加到工程里面就好了

还有一个办法,你可以在PB的命令行方式里面将你的东西做成一个DLL,然后其他模块在使用的时候LOAD

EVC不能编译汇编代码吗(应该不会吧:)))?要不你试着加个XXX.S到工程里面,看能不能编译汇编文件,如果可以就没那么麻烦了,原来没想到还是试了不行,忘了:((
根据地的兄弟们,团结就是力量
goodtaste
驱动牛犊
驱动牛犊
  • 注册日期2005-05-10
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-27 15:59
不好意思,我也遇到了这个问题。我们用的是intel pxa 255的处理器,默认工作在200mhz,我希望改成400mhz,可是今天才发现evc不支持嵌入式汇编。
而且我的汇编基础很差,我想问你提供的.s文件应该怎么用?怎么在里面加函数?在your code...所在的地方直接写代码就可以吗?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-03 14:29
天啦,是不是什么都要我试过才行啊:((  
:)
armasm可以用

armasm sourcefile  objectfile.obj就行了

注意我给你的文件里面需要一个头,干脆全给你吧,哈哈,我就把佛送到西天得了:))
附件名称/大小 下载次数 最后更新
2004-09-03_kxarm.h (5KB)  10
根据地的兄弟们,团结就是力量
wjp_hz
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2004-09-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-02 17:19
呵呵,不好意思:)
现在用你给的obj可以了!:)

大哥,给我一个编译obj用的编译器,我这边没有呀!:)
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-01 12:33
兄弟儿,你要arm还是x86嘛:)你不是在问嵌arm汇编的嘛,我给你的是arm的obj,你在evc里面选编译成armv4i三,咋个搞的嘛,要是用x86汇编你可以直接嵌在c代码中的嘛。努力努力
根据地的兄弟们,团结就是力量
wjp_hz
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2004-09-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-01 09:24
wxl_50685330,还是有错误呀!错误如下:
.\2004-08-31_regmanipulate.obj : fatal error LNK1112: module machine type 'ARM' conflicts with target machine type 'X86'

而且,我编译得到的obj文件也有问题!
wjp_hz
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2004-09-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-08-31 21:44
呵呵,俺明天去试试看!!^!^
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-08-31 13:03
哇,还没弄好啊:),努力努力!

把obj文件放到c:\下(当然可在其他地方,但目录名字不要有空格),然后再evc里面选project->add to project->files,选中这个Obj文件,然后在你要引用的程序里面写:
extern "C" {
extern DWORD ReadMemRegBy32Bits(DWORD volatile* Addr);
}
然后可以直接引用如下:
DWORD data;
data = ReadMemRegBy32Bits((volatile unsigned long *)0xa0022000);

这只是我测试的例子,你试好了自己改函数吧
附件名称/大小 下载次数 最后更新
2004-08-31_regmanipulate.obj (1KB)  8
根据地的兄弟们,团结就是力量
wjp_hz
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2004-09-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-08-31 10:44
wxl_50685330,是不是我编译得到的obj文件不对呀?给我一个正确的obj文件试试吧!:)
wjp_hz
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2004-09-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-08-31 10:42
wxl_50685330,我按照你说的做了,但是还是不行呀! :(
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-08-24 17:01
刚试验完,可以了,在project里选setting,切换到link后把xxx.obj加到object/library modules,然后在引用汇编函数的c文件里面用
extern "C" {
extern function();
}
声明就可以用了
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-08-24 12:59
好吧,等下次遇到这个问题我再看看怎么办,兄弟如果解决了也告诉大家一声,good luck
根据地的兄弟们,团结就是力量
wjp_hz
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2004-09-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-08-23 22:16
呵呵,我们头现在没有时间考虑这件事情了,现在又忙别的了,前几天还在催我,现在又不催了,又让我做别的东东了,说等到想到解决的方法再做!!!
wjp_hz
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2004-09-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-08-23 22:14
呵呵,你说的这种方法,我试过了,还是编译不通!:)
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-08-23 13:21
......等等,我想想:)
    你们头说一定要嵌汇编?对于这个要求你建议他如果实在不行还是用汇编写函数,在需要调用的时候使用函数,这样效果和内嵌汇编是一样的,最多多了函数调用开销,如果这段代码不是非常敏感的话关系不大。如果调用频率太高以致函数调用开销显著的话,再想其他办法,比如找支持内嵌ARM汇编的编译器。
    对于连接我可能说错了一点,用include xx.obj可能不对(不好意思),这样,你在工程里边加入这个obj文件,再build
根据地的兄弟们,团结就是力量
wjp_hz
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2004-09-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-08-20 21:09
wxl_50685330,加上include也不行,编译的时候说这个文件是二进制的,是未确定的!!:(

我们头也不知道问谁了,他对我说,要在操作系统源码中嵌入汇编才行呀!!
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-08-20 13:03
:)这两天有事,不知道你解决没?应该不会啊,build应该是调用armasm来汇编的,你能安wince .net 4.2吗?如果有用build可以编译出目标文件,你看看armasm的参数能不能调整输出文件格式
根据地的兄弟们,团结就是力量
wjp_hz
驱动牛犊
驱动牛犊
  • 注册日期2004-08-10
  • 最后登录2004-09-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-08-16 22:02
wxl_50685330,我用armasm编译得到的是*.o文件呀不是obj的!!:)
上一页
游客

返回顶部