gpt4 book ai didi

assembly - 如何知道程序入口点是ARM还是Thumb模式

转载 作者:行者123 更新时间:2023-12-03 06:22:42 26 4
gpt4 key购买 nike

我正在编写一个 ARMv7 反汇编程序。ARM 引用手册中清楚地描述了在 ARM 和 Thumb 模式之间切换的方法,但是您如何知道程序启动在什么模式下?

我使用的 Xcode 默认编译为 Thumb,所以我知道我自己的所有程序都将以 Thumb 启动,除非我强制编译为 ARM 模式。但是,我希望能够获取任意 mach-o 可执行文件并找出代码开头的指令集模式。

mach-o header 中是否有指定入口点的指令集?

最佳答案

处理器通过打开程序计数器的最低有效位来知道它处于 Thumb 模式,从而导致程序计数器具有奇数值。为了取指令,该位被忽略,您可以通过切换该位在 ARM 和 Thumb 模式之间切换。

当您创建 ARM 二进制文件时,链接器将根据该符号是指向 ARM 还是 Thumb 代码来设置符号地址的最低有效位,以便处理器在程序启动时自动选择正确的模式。你不需要关心这个。

关于assembly - 如何知道程序入口点是ARM还是Thumb模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32278382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com