gpt4 book ai didi

c++ - 程序集 : main:nop vs main proc

转载 作者:行者123 更新时间:2023-11-27 23:19:23 25 4
gpt4 key购买 nike

我正在使用 visual c++ express 编译器来编译 asm32:

; Example assembly language program -- adds 158 to number in memory
; Author: R. Detmer
; Date: 1/2008

.586
.MODEL FLAT

.STACK 4096 ; reserve 4096-byte stack

.DATA ; reserve storage for data
number DWORD -105
sum DWORD ?

.CODE ; start of main program code
main PROC
mov eax, number ; first number to EAX
add eax, 158 ; add 158
mov sum, eax ; sum to memory

mov eax, 0 ; exit with return code 0
ret
main ENDP

END ; end of source code

上面给了我一个链接错误,而这个:

..
.CODE ; start of main program code
main:nop
mov eax, number ; first number to EAX
add eax, 158 ; add 158
mov sum, eax ; sum to memory

mov eax, 0 ; exit with return code 0
ret
end main ; end of source code
..

效果很好!

唯一的区别是main:nop vs main proc

这两者有什么区别,为什么一个是end main关闭,另一个是main endp main

这是我得到的错误:

1>------ Build started: Project: asm1, Configuration: Release Win32 ------
1> Assembling [Inputs]...
1>LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
1>C:\Users\...\Downloads\asm1\Release\asm1.exe : fatal error LNK1120: 1 unresolved externals

最佳答案

它与 PROC 指令没有任何关系。您的原始代码在 END 指令中缺少“主要”操作数。它指定程序的入口点。如果没有,链接器将尝试找到可执行文件 _WinMainCRTStartup 的默认入口点。那会失败,因为您没有它并且没有链接 CRT。

修复:

main    PROC
; etc...
main ENDP

END main

关于c++ - 程序集 : main:nop vs main proc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14391929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com