视觉工作室
要在C程序中获得结果,应将返回值放在汇编代码中的eax中,然后从函数返回.调用者将接收eax的内容作为返回值.
Visual Studio 2015 documentation:
int power2( int num,int power ){ __asm { mov eax,num ; Get first argument mov ecx,power ; Get second argument shl eax,cl ; EAX = EAX * ( 2 to the power of CL ) } // Return with result in EAX}
GCC
GCC inline assembly HOWTO不包含类似的示例.这可能意味着您不能像在Visual Studio中那样使用隐式返回.但是,HOWTO显示您可以将结果存储到程序集块内的C变量,并在程序集块结束后返回该变量的值.
一个字符串复制函数的例子,返回dest的值:
static inline char * strcpy(char * dest,const char *src){int d0,d1,d2;__asm__ __volatile__( "1:\tlodsb\n\t" "stosb\n\t" "testb %%al,%%al\n\t" "jne 1b" : "=&S" (d0),"=&D" (d1),"=&a" (d2) : "0" (src),"1" (dest) : "memory");return dest;}总结
以上是内存溢出为你收集整理的c – __asm {};返回eax的值?全部内容,希望文章能够帮你解决c – __asm {};返回eax的值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)