【发布时间】:2014-07-24 11:08:21
【问题描述】:
我正在尝试调用一个简单的程序集(作为稍后更复杂的测试),但是当我尝试运行程序时它崩溃了(该程序已停止响应)。
main.c:
#include <stdio.h>
#include <stdlib.h>
extern int bar(int param);
int main()
{
int i=8;
i = bar(i);
printf("Hello world! - %i\n",i);
return 0;
}
bar.S
.file "bar.S"
.text
.align 8
.global bar
bar:
add %rdi,1000;
mov %rax,%rdi;
ret;
我担心这可能与我的编译器的配置方式有关(我更习惯于手持 Visual Studio,而不是处理真实环境)。
【问题讨论】:
-
您可能在汇编函数的某处违反了调用约定:en.wikipedia.org/wiki/X86_calling_conventions#cdecl
-
我觉得你不认为 VS 是一个“真实环境”很有趣
标签: c assembly mingw codeblocks