0
点赞
收藏
分享

微信扫一扫

I need to learn ARM assembly, and I use Linux.

左手梦圆 2022-03-15 阅读 56

​​

​​

​​​​



View Full Version : [SOLVED] ​​ARM assembly under Linux​​


chuchi June 26th, 2012, 04:53 PM Hi there!!



I need to learn ARM assembly, and I use Linux. Please, could you give me any starting point about how to install it?? I do not pretend that you teach me ARM assembly. Just a link.



thank you very much!!! youknowme June 27th, 2012, 05:03 AM Hi there!!



I need to learn ARM assembly, and I use Linux. Please, could you give me any starting point about how to install it?? I do not pretend that you teach me ARM assembly. Just a link.



thank you very much!!!


This might be useful to start you off

http://www.coranac.com/tonc/text/asm.htm SevenMachines June 27th, 2012, 08:11 AM Been a year or so, but i think this works? Although personally I recommend setting up a chroot or pbuilder arm environment, its less hassle with more complicated programs, or at least was in my previous experience.



$ apt-get install gcc-4.6-arm-linux-gnueabi libc6-dev-armel-cross


$ cat hello.s

.data


msg:

.ascii "Hello, ARM World!\n"

len = . - msg



.text


.globl _start

_start:

/* write syscall */

mov %r0, $1

ldr %r1, =msg

ldr %r2, =len

mov %r7, $4

swi $0


/* exit syscall */

mov %r0, $0

mov %r7, $1

swi $0



$ arm-linux-gnueabi-as -o hello.o hello.s


$ arm-linux-gnueabi-ld -o hello hello.o


$ file hello

hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped


$ ./hello

Hello, ARM World! chuchi June 27th, 2012, 06:35 PM Hi!! thank you very much for reply. But that type of instructions is of the form: Mov source,dest. The syntax instructions on ARM is : Mov dest,source. This is what I need


Thank you very much! chuchi June 27th, 2012, 06:49 PM Ok I was wrong, your code is right!! I am very sorry!!


Everything is ok, except when I type ./hello I get




bash: ./hello: cannot execute binary file



Why??


Thank you very much! SevenMachines June 27th, 2012, 07:17 PM Yes. its just at&t syntax versus intel.


Sorry, obviously the binary is arm and not x86 so wont run, I just forgot I had qemu emulation enabled. Try,



$ ./hello

bash: ./hello: cannot execute binary file


# Set up qemu arm emulation

$ sudo apt-get install qemu-user-static


$ ./hello

Hello, ARM World! chuchi June 27th, 2012, 07:25 PM HI!! now it works!! thank you very very much!! chuchi June 28th, 2012, 09:48 AM Hi again!!


Do you know any way of debugging in qemu?


Surfing the net they say you have to install and configure a new kernel. Is there any other way??


thank you very much!! SevenMachines June 28th, 2012, 11:21 PM You can set qemu to wait on a gdb connection



# In a terminal

$ qemu-arm-static -g 10101 ./hello



# In a new terminal

$ sudo apt-get install gdb-multiarch


Then start gdb-multiarch, load symbols, and connect gdb to qemu, eg


$gdb-multiarch


(gdb) list _start

8 .text

9

10 .globl _start

11 _start:

12 /* write syscall */

13 mov %r0, $1

14 ldr %r1, =msg

15 ldr %r2, =len

16 mov %r7, $4

17 swi $0


(gdb) b 16

Breakpoint 1 at 0x8080: file hello.s, line 16.



(gdb) target remote :10101

Remote debugging using :10101

[New Remote target]

[Switching to Remote target]

_start () at hello.s:13

13 mov %r0, $1


(gdb) c

Continuing.


Breakpoint 1, _start () at hello.s:16

16 mov %r7, $4

(gdb) n

17 swi $0

(gdb) n

20 mov %r0, $0

(gdb) c

Continuing.

[Inferior 1 (Remote target) exited normally]



[EDIT] You'll want debugging information ie

$ arm-linux-gnueabi-as -gstabs -o hello.o hello.s

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

上一篇:​​Using QEMU for Embedded Systems Development, Part 3​​

下一篇:​​‘Hello World!’ in ARM assembly​​

相关热门文章


  • ​​SHTML是什么_SSI有什么用...​​
  • ​​shell中字符串操作​​
  • ​​卡尔曼滤波的原理说明...​​
  • ​​关于java中的“错误:找不到或...​​
  • ​​shell中的特殊字符​​


  • ​​linux dhcp peizhi roc​​
  • ​​关于Unix文件的软链接​​
  • ​​求教这个命令什么意思,我是新...​​
  • ​​sed -e "/grep/d" 是什么意思...​​
  • ​​谁能够帮我解决LINUX 2.6 10...​​

给主人留下些什么吧!~~ 评论热议


举报

相关推荐

0 条评论