是否可以将%r8d与i686-elf-gcc一起使用?

时间:2016-11-08 20:26:46

标签: gcc cross-compiling elf

我正在开发一些有趣的"实验室的计算机体系结构课程,让学生编写并运行一个非常小的操作系统。我正在跟踪http://wiki.osdev.org/Bare_Bones中的Bare Bones设置,并使用Richard Hull的预编译i686交叉编译器(https://github.com/rm-hull/barebones-toolchain)。

当我尝试使用%r8d编写汇编代码时,我收到此错误

 Error: bad register name `%r8'

自述文件说"有两种平台风格,32位和64位,具体取决于您的主机Linux环境",还列出" i686(32位ELF)"作为目标之一。

我是否纠正问题的根源是ELF目标是32位?如果是这样,是否有一种简单的方法可以启动并运行64位ELF目标的交叉编译器?

1 个答案:

答案 0 :(得分:1)

我假设README所说的是" CHOST"编译器,而#34; CTARGET"总是i686(32位)。没有%r8d(或%r8或任何%r{number})寄存器,所以不能你不能使用它(它&# 39;是x86-64 / IA32-E寄存器。)

您可以看到my blogpost on CHOST/CBUILD/CTARGET以了解用于交叉编译的不同平台名称之间的关系。