【发布时间】:2021-03-24 13:18:18
【问题描述】:
要使用 MASM 用 32 位汇编语言编写完整的程序,可以这样开始,
.686
.model flat,c
.stack 100h
.data
number sdword 5
.code
main proc
mov eax,number
ret
main endp
end main
而在 64 位模式下,代码编写为
.data
number sdword 5
.code
main proc
mov eax,number
ret
main endp
end
这些设置被设置为默认值,这导致在 64 位模式下组装时出现错误,不是因为平台设置为 Win32,而是默认入口点 mainCRTStartup。要解决此问题,必须在高级链接器选项中将其设置为 main。
我的问题是,为什么在 32 位模式下不会遇到这样的问题,而 mainCRTStartup 入口点到底指的是什么?我的第二个问题是,为什么在 64 位模式下汇编我们省略了第一条指令行.686 .model flat,c .stack 100h 我们不必分配堆栈以及语言类型吗?
指令.686 表示,
为 Pentium Pro 处理器启用非特权指令的汇编。 (仅限 32 位 MASM。)
为什么在 64 位模式下不是这样?
【问题讨论】:
标签: visual-studio assembly x86 32bit-64bit masm