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指令集编写的汇编程序例子?

谢谢!
...全文
172 6 打赏 收藏 转发到动态 举报
写回复
用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 试试是否
还有相同错误~~~
原作者网站http://www.xuyibo.org ,感谢徐艺波辛苦整理写出的该技术手册,为我等FASM学习者提供了良好的参考资料。目前FASM学习资料实在是无比匮乏,网上也鲜见。这个技术手册无疑是雪送炭,再洗感谢原作者。 1. 简介 1.1 编译器概述 1.1.1 系统需求 1.1.2 编译器使用 1.1.3 编译器选项 1.1.4 在命令行下执行编译器 1.1.5 命令行编译器消息 1.1.6 输出格式 1.2 汇编语法 1.2.1 指令语法 1.2.2 数据定义 1.2.3 常数和标号 1.2.4 数值表达式 1.2.5 跳转和调用 1.2.6 操作数尺寸设置 2. 指令集 2.1 x86 体系指令 2.1.1 数据传送指令 2.1.2 类型转换指令 2.1.3 二进制算术指令 2.1.4 十进制算术指令 2.1.5 逻辑指令 2.1.6 控制转移指令 2.1.7 I/O 指令 2.1.8 字符串操作指令 2.1.9 标志控制指令 2.1.10 条件操作指令 2.1.11 其他指令 2.1.12 系统指令 2.1.13 FPU 指令 2.1.14 MMX 指令 2.1.15 SSE 指令 2.1.16 SSE2 指令 2.1.17 SSE3 指令 2.1.18 AMD 3DNOW!指令 2.1.19 x86-64长模式指令 2.2 控制伪指令 2.2.1 数值常量 2.2.2 条件汇编 2.2.3 重复块指令 2.2.4 地址空间 2.2.5 其他伪指令 2.2.6 多遍扫描 2.3 预处理伪指令 2.3.1 包含源文件 2.3.2 符号常量 2.3.3 宏指令 2.3.4 结构 2.3.5 重复宏指令 2.3.6 条件宏指令 2.3.7 处理顺序 2.4 格式伪指令 2.4.1 MZ 格式 2.4.2 PE 格式 2.4.3 COFF 格式 2.4.4 ELF 格式 3. Windows 编程 3.1 基本头文件 3.1.1 结构 3.1.2 导入表 3.1.3 过程 3.1.4 导出表 3.1.5 COM(组件) 3.1.6 资源 3.1.7 字符编码 3.2 扩展头文件 3.2.1 过程参数 3.2.2 结构化源码

21,497

社区成员

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

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