如何在ARM汇编器代码中使用外部定义,如LONG_MIN和LONG_MAX?
假设my_arm.h看起来像这样:
int my_arm(int foo);
假设我有一个my_main.c,如下所示:
...
#include <limits.h>
#include "my_arm.h"
...
int main (int argc, char *argv[])
{
int foo=0;
...
printf("My arm assembler function returns (%d)\n", my_arm(foo));
...
}
m
我有一个很短的汇编程序,我想为所有受支持的架构保存在一个文件中。一种方法是在C文件中使用内联程序集,但是由于周围没有真正的C代码,我更愿意使用(预处理)汇编程序文件。比如:
.file "zsvjmp.S"
# Here comes the description what this code is supposed to do
.globl zsvjmp_
.text
zsvjmp_:
#if defined (__i386__)
# here comes the i386 specific assembler code
#elif
我正在尝试诊断为什么我编写的一个看似很小的C函数会产生一个很大的.text部分。我已经使用arm-elf-size和arm-elf-objdump来隔离目标文件和函数,但我只能让这些工具生成汇编代码,我没有时间进行逆向工程。
我试过使用与arm-elf-objdump -g兼容的gcc开关"-g“,但它一直出现错误"No though information found”,我在谷歌上搜索了一下也没有明确的答案(尽管其他人也有相同的问题)。
有没有其他方法可以生成混合的C/汇编文件,这样我就可以隔离函数中的故障点?谢谢!
我已经尝试了几个最新的FFMpeg版本(2.1.4和2.2 rc2),但由于以下错误而无法编译:
INSTALL libavformat/libavformat.a
AS libavcodec/arm/vp8dsp_armv6.o
AR libavresample/libavresample.a
CC libavcodec/ass_split.o
CC libavcodec/assdec.o
CC libavcodec/asv.o
CC libavcodec/asvdec.o
/Users/erikvillegas/Development/ffmpeg64/ffmpeg/libav
我正在使用带ARM工具集的Keil4用于Cortex M3 (如果这很重要的话)。我试过这个简单的代码:
class Base
{
public:
virtual ~Base() {}
};
class Derived : public Base
{
public:
int b;
virtual ~Derived() {}
};
如果我在本地创建一个派生的实例(在main中),一切都很好:调试正常,程序大小约为300字节。
如果我创建一个派生静态或全局实例,程序大小将增加到1000字节,调试会话在BKPT指令上停止。
我对此进行了排序,因为堆大小被
我正在尝试写一个简单的脚本来反汇编ARM/THUMB字节码。在ARM中,从一种模式切换到另一种模式是很常见的,因此反汇编程序能够遵循这一点是非常关键的。尽管文档上说它非常简单(参见 ),但我还是遇到了问题。对于我来说,这在运行时似乎不起作用。
下面是我的测试:
for i in md.disasm(CODE, 0x1000):
print("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))
if i.mnemonic == "bx":
md.mode = cs.CS_MODE_T
我正在尝试从头开始构建OpenSSL 1.0.2t (这个版本是我的项目所必需的,但苹果M1处理器上的MacOS Big Sur 11.2.3不支持它)我的构建失败并显示unknonw directive消息。谁能解释一下我怎么才能修复它? 附注:目前我无法升级到支持的OpenSSL 1.1.1 以下是构建日志: make all
making all in crypto...
cc -I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch arm64 -O3 -DL_ENDI
如何从交叉编译的二进制文件生成程序集?
使用的编译命令是:
arm-none-linux-gnueabi-gcc test.c -o test
如何解压缩二进制test?
我用过:
objdump -d test -m arm
但上面写着:
test: file format elf32-little
objdump: can't use supplied machine arm
有什么帮助吗?