首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

START与STDCALL?该如何处理

2012-03-13 
START与STDCALL?.386.model flat.codestart:mov eax,0a9d7c6e5hsal eax,4retend start程序如上ml /c /coff

START与STDCALL?
.386
.model flat
.code
start:
mov eax,0a9d7c6e5h
sal eax,4
ret
end start

程序如上

ml /c /coff ..\myprogram\test.asm
link /subsystem:console test.obj编译连接

在LINK时报error LNK2001: unresolved external symbol _start

怎么回事?

后来在。MODEL FLAT后加了个,STDCALL就行了,又是怎么回事,分析下。。。。

[解决办法]
model 后面加的STDCALL意思是该文件中的所有函数调用模式都为STDCALL(除非另行指定)

,显然连接器希望看到一个以STDCALL方式定义的符号,所以你后来加上STDCALL

link正确找到了符号。
[解决办法]
这里的STDCALL就定义编译的时候的格式,会将上面的start编译成_Start;不然linker就找不到相应的函数开始地方
[解决办法]
32位Windows程序只能采用平展模式(Flat),因为Win32程序使用一个连续的4GB主存空间。由于利用了应用程序接口API,其参数传递采用标准调用方式(Stdcall),所以存储模式伪指令应该是“.model flat,stdcall”。

热点排行