如何将用C声明的函数用汇编来实现?

xiehui3651 2013-11-07 08:04:31
在头文件test.h中有函数声明:
void *test(int a,intb);

在test.cpp中如何用汇编来实现?不需要考虑实际函数的实现。
我尝试
__asm{
.text:
.globl test;
xxx
}

但是在第一行就会报编译错误(编译器:MSVC)。
...全文
341 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiehui3651 2013-11-08
  • 打赏
  • 举报
回复
多谢,看样子是不能像gcc那样了。 quote=引用 10 楼 turingo 的回复:] 每种编译器的嵌入汇编都不太一样,VC的参考MSDN或者是http://www.cppblog.com/xingkongyun/archive/2008/12/21/70003.html
引用 楼主 xiehui3651 的回复:
在头文件test.h中有函数声明: void *test(int a,intb); 在test.cpp中如何用汇编来实现?不需要考虑实际函数的实现。 我尝试 __asm{ .text: .globl test; xxx } 但是在第一行就会报编译错误(编译器:MSVC)。
[/quote]
图灵狗 2013-11-08
  • 打赏
  • 举报
回复
每种编译器的嵌入汇编都不太一样,VC的参考MSDN或者是http://www.cppblog.com/xingkongyun/archive/2008/12/21/70003.html
引用 楼主 xiehui3651 的回复:
在头文件test.h中有函数声明: void *test(int a,intb); 在test.cpp中如何用汇编来实现?不需要考虑实际函数的实现。 我尝试 __asm{ .text: .globl test; xxx } 但是在第一行就会报编译错误(编译器:MSVC)。
xiehui3651 2013-11-08
  • 打赏
  • 举报
回复
难道是gcc编译器和MSVC的差别,MSVC不支持?
xiehui3651 2013-11-08
  • 打赏
  • 举报
回复
这种方法我已经用过,确实好用的,但不是我想要的啊。 我想用完全的汇编,函数名作为用汇编定义的一个标记符。
引用 5 楼 menzi11 的回复:
.h : void *test(int a,intb); .cpp : void *test(int a,intb) { __asm { mov eax,[a] mov ecx,[b] //......do anything u want! } } 够简单了吧.另外别忘了把GCC里面的AT&T汇编格式转成intel格式的!
mujiok2003 2013-11-07
  • 打赏
  • 举报
回复
看看例子先 http://msdn.microsoft.com/en-us/library/vstudio/5sds75we.aspx
  • 打赏
  • 举报
回复
MASM语法大概是这么写. test proc a:DWORD,b:DWORD ... test endp
menzi11 2013-11-07
  • 打赏
  • 举报
回复
.h : void *test(int a,intb); .cpp : void *test(int a,intb) { __asm { mov eax,[a] mov ecx,[b] //......do anything u want! } } 够简单了吧.另外别忘了把GCC里面的AT&T汇编格式转成intel格式的!
vrace 2013-11-07
  • 打赏
  • 举报
回复
gcc 的汇编和 vc 的汇编不一样的
xiehui3651 2013-11-07
  • 打赏
  • 举报
回复
引用 1 楼 vrace 的回复:
整个函数用汇编来写的话,应该单独拆出来,换成 .asm 文件,用 ml /c /coff 来编译(可以下载个 MASM32 来玩玩)
源码用编译器宏控制了,对应gcc的实现跟我举例一样在汇编里定义了一个标记,但是我自己实现了一个MSVC编译器的,编译不过,想搞明白为什么。
xiehui3651 2013-11-07
  • 打赏
  • 举报
回复
实际上我是在一个开源项目里看到这样的代码了,源码里有gcc里的实现,但是我尝试在VS里实现会报编译错误,没搞明白是为什么。
vrace 2013-11-07
  • 打赏
  • 举报
回复
整个函数用汇编来写的话,应该单独拆出来,换成 .asm 文件,用 ml /c /coff 来编译(可以下载个 MASM32 来玩玩)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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