我正在将一些继承的代码移植到我当前的平台上。当我编译它时,它报告了一些有关arm汇编程序代码的错误。
该信息显示:
| {standard input}:7236: Error: thumb conditional instruction should be in IT block -- `movne r0,r2'
| {standard input}:7237: Error: thumb conditional instruction should be in IT block -- `biceq r0,r0,#0xff'
| {standard input}:7238: E
我的程序在尝试将“%1”写入字符串时失败。
(gdb) info frame
Stack level 0, frame at 0xb6b3c040:
eip = 0xb7877cdf; saved eip 0xb7858eae
called by frame at 0xb6b3cc50
Arglist at 0x91a1649, args:
Locals at 0x91a1649, Previous frame's sp is 0xb6b3c040
Saved registers:
ebx at 0xb6b3c02c, ebp at 0xb6b3c038, esi at
我这里有这个linux nasm代码,它不会崩溃。在printString的末尾有ret 80指令,这个程序不应该崩溃吗?
bits 32
section .data
hello: db 'Hello Linux assembly!!!!!!!!!!!!!!!!!!!',10,0
helloLen: equ $-hello
anotherString db "hello im another string!!!!",10,0
anotherStringlen equ $-anotherString
se
我试图在不使用跳转指令的情况下将此代码转换为ARM:
if a == 0 || b == 1 then c:=10 else c:=20;
if d == 0 && e == 1 then f:=30 else c:=40;
我这么做是为了fisrt循环。但我对此并不确定。是真的吗?
CMP r0, #0 ; compare if a=0
CMP r1, #1 ; compare if b=0
MOVEQ r3, #10
MOVNE r3, #20
怎么做第二个呢?
有一个数字媒体设备,我想让ImageMagick命令行工具‘导入’工作。尝试从其他系统运行二进制文件会产生“无法执行二进制文件”错误,因为体系结构不同(我猜)。
我如何让这个工具在这个MIPS架构上工作--设备上没有编译器或包管理器。
最终的目标是使用导入来拍摄任何给定时间附加显示上的屏幕截图。
uname -a
Linux 4310 2.6.22.19-27-sigma #2 PREEMPT Mon May 16 01:03:35 PDT 2011 mips GNU/Linux
more /proc/cpuinfo
system type : Sigma Des
如何从交叉编译的二进制文件生成程序集?
使用的编译命令是:
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
有什么帮助吗?
我想在glibc-2.14.1包中找到暂停和σ挂起的源文件。I grep包并找到文件sysdeps/posix/pause.c有函数暂停的定义,代码是
int
__libc_pause (void)
{
sigset_t set;
__sigemptyset (&set);
__sigprocmask (SIG_BLOCK, NULL, &set);
/* pause is a cancellation point, but so is sigsuspend.
So no need for anything special