[求助]Linux下 关于gcc嵌入汇编,函数无法传出char指针的问题
时间:2010-09-01
来源:互联网
本帖最后由 alsjia 于 2010-09-01 17:48 编辑
各位大虾!
本人为菜鸟。帮忙看下代码,就是死活传不出char指针。
复制代码
各位大虾!
本人为菜鸟。帮忙看下代码,就是死活传不出char指针。
- #include <stdio.h>
- #include <stdlib.h>
- //#include <mntent.h>
- #include <string.h>
- //#include <sys/vfs.h>
- #include <unistd.h>
-
- int GetCpuVendor(char *vendor_) {
- long vEBX, vECX, vEDX;
- int veax = 0x0;
- if(NULL == vendor_) {
- perror("GetCpuVendor");
- return -1;
- }
- #ifdef _WIN32
- __asm{ // 汇编。
- mov eax, veax
- cpuid
- mov vEBX, ebx
- mov vECX, ecx
- mov vEDX, edx
- }
- #else
- __asm__ __volatile__ ("pusha\n\t"
- ::"a"(veax)
- );
- __asm__ __volatile__("cpuid\n\t"
- :"=b"(vEBX), "=c"(vECX), "=d"(vEDX)
- :);
- #endif
- memcpy(vendor_, (char *) &vEBX, sizeof(vEBX));
- memcpy(vendor_ + 4, (char *) &vEDX, sizeof(vEDX));
- memcpy(vendor_ + 8, (char *) &vECX, sizeof(vECX));
- return 0;
- }
-
- int main()
- {
- char vendor[32];
- bzero(vendor, sizeof(vendor));
- GetCpuVendor((char *)&vendor);
- printf("%s", vendor);
- return 0;
- }
作者: alsjia 发布时间: 2010-09-01
大虾们,帮帮忙吧,我都整一天了,用code::blocks查看内存,vender_下是有值的。VC下是_WIN32部分是可以的。
作者: alsjia 发布时间: 2010-09-01
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28