AMD64指令集中有没有类似x86指令集中提供的伪指令?

han012 2005-03-31 11:29:38
据说AMD指令机集兼容x86指令集, 可是我把下面最简单的汇编程序拿到AMD PC(64位CPU)下编译,
用 vc++ 8.0 提供的 ml64.exe 编译器(AMD64汇编编译器).

; Hello.asm
.386
.model flat

.CODE
mov eax, 1
END

结果,编译器报告如下错误:
hello.asm(2) error A2008: Syntax error: .
hello.asm(3) error A2008: Syntax error: .

以上程序可以在x86 PC上成功编译!

我把
.386
.model flat
两行删除后, 在AMD PC下成功编译.

从结果分析,至少AMD指令集不支持
.386
.model flat 这样的语句!

我的问题是AMD指令集中有没有类似于
.386 ;选择80x86指令系统
.model flat ;选择存储模式

这样的简化段定义伪指令?
另外哪里可以找到完整的用AMD指令集编写的汇编程序例子?

谢谢!
...全文
159 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
han012 2005-04-04
  • 打赏
  • 举报
回复
我大概明白了, AMD64体系中舍弃了x86中的分段式内存模型(Segmented Memory Module), 而使用统一的flat内存模式.

64-bit mode uses a flat segmentation model of virtual memory. The 64-bit virtual-memory space is treated as a single,flat(unsegmented) address space. Program address access locations that can be anywhere in the linear 64-bit address space.

谢谢各位回答, 一会儿结帖.
longsong 2005-04-01
  • 打赏
  • 举报
回复
直接使用.code 和.data就可以了,无需指定任何模式。


longsong 2005-04-01
  • 打赏
  • 举报
回复

64位只有一个long 模式,所以不需要.model flat伪指令。也无需.386伪指令。


大熊猫侯佩 2005-03-31
  • 打赏
  • 举报
回复
从以下消息来看应该是有的,但没怎么接触~~~

http://www.enet.com.cn/elady/inforcenter/A20040531312876.html
han012 2005-03-31
  • 打赏
  • 举报
回复
masm32,masm611可以正确编译,但产生的目标代码是针对x86体系结构的,也就是32-bit代码。

我希望开发AMD64体系结构代码(AMDx86-64),即 64-bit代码,所以只能用ml64.exe编译。

AMD64 architecture中,通用寄存器(General-purpose registers)增加到了16个,而且都是64位.
RAX,RDX, RBX,RDX,RSI, RDI, RSP,RBP,R9,R10,R11,R12,R13,R14,R15

大熊猫侯佩 2005-03-31
  • 打赏
  • 举报
回复
你不用 ml64.exe 编译~~~改用 masm32 或 masm611 试试是否
还有相同错误~~~

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧