一段汇编,请教tc汇编转换linux c汇编的问题。

green__hand 2007-04-12 03:41:22
#include stdio.h
void RoundToIntFPU(long far &ival, double fval)
{
asm fld qword ptr [fval]
asm les di, dword ptr [ival]
asm fist dword ptr es[di]
}

这是tc下的汇编,请问是不是linux c下的内嵌汇编是不是和tc下的不一样。怎么转换。请指教。
还有是不是在arm上运行又要变成别的了。是不是都不一样啊。指教了。
最好高手能改写一下。给个例子
...全文
291 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
green__hand 2007-04-16
  • 打赏
  • 举报
回复
可否加我wangyuanliangmsn@hotmail.com
谢谢。
  • 打赏
  • 举报
回复
在ARM的基本架构中是没有FPU的,一般高级语言编译器都是把浮点运算用定点仿真代码实现的(很慢)。
要用嵌入汇编写FPU指令话,首先要确定你用的ARM处理器带FPU(象CortexR4F),另外你用的开发板带的编译器支持它的汇编指令集。
green__hand 2007-04-16
  • 打赏
  • 举报
回复
arm 上呢?
  • 打赏
  • 举报
回复
你怎么N个帖子都是这三句呀?:)

Linux c?是gcc吧。
32-bit的,要这么写:
void RoundToIntFPU(int *ival, double fval)
{
asm("fld %0\n" : :"f"(fval));
asm("movl %0, %%edi\n" : :"m"(ival));
asm("fist (%edi)");
}

使用的时候要显式取地址:RoundToIntFPU(&i, d);
green__hand 2007-04-15
  • 打赏
  • 举报
回复
是没人会,还是嫌分少?
green__hand 2007-04-12
  • 打赏
  • 举报
回复
没人帮忙吗?

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧