.data
.global _start
_start:
mov r7, #4
mov r0, #1
mov r2, #12
ldr r4, =#0x6c6c6548
str r4, [pc, #4]
mov r1, pc
add pc, pc, #8
strbt r6, [ip], -r8, asr #10
svcvs 0x0057206f
beq 0x193b248
swi #0
mov r7, #1
mov r0, #0
swi #0
この小さなARMアセンブリプログラムは、 "Hello World"を表示していました。テストにtest.s
として保存します。このアセンブリプログラムは "Hello World"をどのように印刷できますか?
$ as -o test.o test.s
$ ld -o test test.o
$ ./test
Hello World
$
どのようにこの仕事をしますか?私はプログラム全体で1つの文字列を見ることはできません。また、他の場所から文字列を読み取ることもありません。このコードは文字列を印刷するために必要なすべてのものです。文字列はどこから来たのですか?ここで
ああ、そうです。私が正しくそれをしたら、それは "lleH"(これは後方ですか?)でなければなりません。残りはどこですか? 2番目の16進定数は0バイトを含み、3番目の定数はさらに奇妙に見えます。 – user6571836