首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在powerpc汇编程序中做错了什么?

我在powerpc汇编程序中做错了什么?
EN

Stack Overflow用户
提问于 2015-09-12 02:32:20
回答 1查看 167关注 0票数 0

我编写了一个简单的汇编程序来熟悉QEMU。我一直遵循这两个教程(opensourceforu.efytimes.com/2011/07/qemu-for-embedded-systems-development-part-2/) (http://www.csd.uwo.ca/~mburrel/stuff/ppc-asm.html)下面是我为PowerPC写的汇编程序,从第二个教程稍微修改了一下。

代码语言:javascript
复制
.global _Start
_Start:
addi 3, 0, 0xa #load 0xA into r3
addi 4, 0, 0xb #load 0xB into r4
addi 5, 0, 0xc #load 0xB into r5
b .

它很基本,只是将随机值加载到通用寄存器3-5中。

当我交叉编译它时,我使用下面的链接器脚本。

代码语言:javascript
复制
ENTRY(_Start)
SECTIONS
{
. = 0x10000;
startup : { dummyStartup.o(.text)}
}

我通过第一个教程中的指令使用ppc的交叉编译器将所有东西放在一起,当我在QEMU中运行时,寄存器3-5具有预期的值。

我的问题是,当我将0x10000更改为其他值时,例如0x10500或0x9999,程序仍然运行得很好。本教程指出,QEMU的-kernel选项需要将所有内容设置为0x10000才能执行我的代码,但情况似乎并非如此。为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2015-10-14 13:43:40

我认为0x10000的值与平台相关。因此,根据QEMU模拟的机器不同,内核加载地址也会有所不同。

如果您在QEMU源代码中查找KERNEL_LOAD_ADDR,您将看到有几个不同的值:

https://github.com/qemu/qemu/search?q=KERNEL_LOAD_ADDR

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32530010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档