小编Ent*_*tiC的帖子

32 位 MASM 模式与 64 位有何不同?

要使用 MASM 以 32 位汇编语言编写完整的程序,可以这样开始:

.686
.model flat,c
.stack 100h
.data
number sdword 5
.code
main proc
mov eax,number
ret
main endp
end main
Run Code Online (Sandbox Code Playgroud)

而在 64 位模式下,代码写为

.data
number sdword 5
.code
main proc
mov eax,number
ret
main endp
end
Run Code Online (Sandbox Code Playgroud)

这些设置设置为默认值,导致在 64 位模式下编译时出现错误,不是因为平台设置为 Win32,而是因为默认入口点 mainCRTStartup。main要解决此问题,必须在高级链接器选项中将其设置为。

我的问题是,为什么在 32 位模式下不会遇到这样的问题,而 mainCRTStartup 入口点到底指的是什么?我的第二个问题是,为什么在 64 位模式下汇编时我们省略了第一行指令,.686 .model flat,c .stack 100h我们不需要分配堆栈以及语言类型吗?该指令 .686表明,

启用 Pentium Pro 处理器的非特权指令汇编。(仅限 32 位 MASM。)

为什么64位模式下不是这样?

x86 assembly masm 32bit-64bit visual-studio

3
推荐指数
1
解决办法
1753
查看次数

标签 统计

32bit-64bit ×1

assembly ×1

masm ×1

visual-studio ×1

x86 ×1