ARM 공부의 목적이었던 ARM Assembly로 프로그래밍을 해보았다.

가장 처음 Intel Assembly로 Hello World를 찍을 때 썼던 방식 그대로이다.

사실 ARM은 레지스터에 인자를 주기 때문에 스택을 할당할 필요는 없지만 배우는 김에 갖다 쓰면서 그대로 할당하도록 해 두었다.

확실히 Intel에 비해 덜 익숙해서 그런지 위화감이 조금 있긴 하지만 금방 익숙해질 것 같다.


실행시키면 이렇게 "Hello, World!"를 출력해 준다.


이것도 Intel때와 마찬가지로 syscall을 이용하여 write 함수를 사용한 것인데,

첫번째 인자인 r0에는 File Descriptor로 stdout인 1이 들어가고,

r1에는 문자열의 주소가 들어가며

r2에는 문자열의 길이인 14가 들어갔다.

r7에는 syscall에서 write함수가 4번이기 때문에 4를 지정해 주었다.

요즘은 'Software Interrupt'를 나타내는 swi 명령어보다는 'Supervisor Call'을 나타내는 svc를 쓴다고는 하지만 일단 컴파일은 되므로 swi를 사용하여 프로그래밍해 보았다.

실제로 컴파일한 내용을 다시 디스어셈블해서 확인해 보니 swi가 아니라 svc로 되어 있었다.

계속 공부하자!

블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

댓글을 달아 주세요