C코드 어셈블리어 변환인데요 ㅠ

suk5206의 이미지

nt count =0;
count++;

if(x==1) {

printf("원판 1을 %c에서 %c로 이동합니다. \n", from, to);

}

else {

hanoi(x-1, from, aux, to);

printf("원판 %d을 %c에서 %c로 이동합니다. \n", x, from, to);

hanoi(x-1, aux, to, from);

}

현재 리눅스로 C파일을 크로스 컴파일 한 후에 크로스 컴파일 한 소스로

하노이 탑을 공부하는 중에 ㅠㅠㅠ

하노이함수의 부분을 크로스 컴파일 해서 아래와 같은 결과를 얻엇는데요...

제가 C파일로 작성한 부분이 정확히 어느부분인지 잘 모르겠네요...

대충은 짐작이 가는데 ㅠㅠㅠ어떻게 동작하는건지 모르겠어요 ㅠㅠ
가능하시다면 주석도좀 부탁드려요 ㅠㅠㅠ

@ Generated by gcc 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/) for ARM/elf
.file "hanoi.c"
.gcc2_compiled.:
.section .rodata
.align 2
.LC0:
.ascii "Move Disk From %c to %c 12"
.text
.align 2
.global move
.type move,function
move:
@ args = 0, pretend = 0, frame = 4
@ frame_needed = 1, current_function_anonymous_args = 0
mov ip, sp
stmfd sp!, {fp, ip, lr, pc}
sub fp, ip, #4
sub sp, sp, #4
mov r2, r0
mov r3, r1
strb r2, [fp, #-13]
strb r3, [fp, #-14]
ldrb r3, [fp, #-13] @ zero_extendqisi2
ldrb r2, [fp, #-14] @ zero_extendqisi2
ldr r0, .L4
mov r1, r3
bl printf
b .L3
.L5:
.align 2
.L4:
.word .LC0
.L3:
.L2:
ldmea fp, {fp, sp, pc}
.Lfe1:
.size move,.Lfe1-move
.section .rodata
.align 2
.LC1:
.ascii " 1 from %c to %c moves12"
.align 2
.LC2:
.ascii " %d from %c to %c moves12"
.text
.align 2
.global hanoi
.type hanoi,function
hanoi:
@ args = 0, pretend = 0, frame = 12
@ frame_needed = 1, current_function_anonymous_args = 0
mov ip, sp
stmfd sp!, {fp, ip, lr, pc}
sub fp, ip, #4
sub sp, sp, #12
str r0, [fp, #-16]
strb r1, [fp, #-17]
strb r2, [fp, #-18]
strb r3, [fp, #-19]
mov r3, #0
str r3, [fp, #-24]
ldr r3, [fp, #-24]
add r2, r3, #1
str r2, [fp, #-24]
ldr r3, [fp, #-16]
cmp r3, #1
bne .L7
ldrb r3, [fp, #-17] @ zero_extendqisi2
ldrb r2, [fp, #-18] @ zero_extendqisi2
ldr r0, .L9
mov r1, r3
bl printf
b .L8
.L10:
.align 2
.L9:
.word .LC1
.L7:
ldr r2, [fp, #-16]
sub r3, r2, #1
ldrb r2, [fp, #-17] @ zero_extendqisi2
ldrb ip, [fp, #-19] @ zero_extendqisi2
ldrb lr, [fp, #-18] @ zero_extendqisi2
mov r0, r3
mov r1, r2
mov r2, ip
mov r3, lr
bl hanoi
ldrb r3, [fp, #-17] @ zero_extendqisi2
ldrb ip, [fp, #-18] @ zero_extendqisi2
ldr r0, .L12
ldr r1, [fp, #-16]
mov r2, r3
mov r3, ip
bl printf
ldr r2, [fp, #-16]
sub r3, r2, #1
ldrb r2, [fp, #-19] @ zero_extendqisi2
ldrb ip, [fp, #-18] @ zero_extendqisi2
ldrb lr, [fp, #-17] @ zero_extendqisi2
mov r0, r3
mov r1, r2
mov r2, ip
mov r3, lr
bl hanoi
b .L11
.L13:
.align 2
.L12:
.word .LC2
.L11:
.L8:
.L6:
ldmea fp, {fp, sp, pc}
.Lfe2:
.size hanoi,.Lfe2-hanoi
.section .rodata
.align 2
.LC3:
.ascii "Enter the number of disks you want to play with :"
.align 2
.LC4:
.ascii "%d"
.align 2
.LC5:
.ascii "12 The No of moves requried is = %d 12"
.text
.align 2
.global main
.type main,function
main:
@ args = 0, pretend = 0, frame = 8
@ frame_needed = 1, current_function_anonymous_args = 0
mov ip, sp
stmfd sp!, {r4, fp, ip, lr, pc}
sub fp, ip, #4
sub sp, sp, #8
bl __gccmain
ldr r0, .L16
bl printf
sub r3, fp, #20
ldr r0, .L16+4
mov r1, r3
bl scanf
ldr r0, [fp, #-20]
bl __floatsidf
mov r4, r1
mov r3, r0
adr r0, .L16+8
ldmia r0, {r0-r1}
mov r2, r3
mov r3, r4
bl pow
mov r4, r1
mov r3, r0
mov r1, r4
mov r0, r3
adr r2, .L16+16
ldmia r2, {r2-r3}
bl __subdf3
mov r4, r1
mov r3, r0
mov r1, r4
mov r0, r3
bl __fixdfsi
mov r3, r0
str r3, [fp, #-24]
ldr r0, .L16+24
ldr r1, [fp, #-24]
bl printf
ldr r0, [fp, #-20]
mov r1, #65
mov r2, #67
mov r3, #66
bl hanoi
b .L15
.L17:
.align 2
.L16:
.word .LC3
.word .LC4
.long 0x40000000, 0x0 @ double 2.00000000000000000000e0
.long 0x3ff00000, 0x0 @ double 1.00000000000000000000e0
.word .LC5
.L15:
.L14:
ldmea fp, {r4, fp, sp, pc}
.Lfe3:
.size main,.Lfe3-main

drinkme의 이미지

honoi:
부터
.Lfe2:
바로 전까지가 작성하신 hanoi() 입니다.

suk5206의 이미지

부탁드립니다...

planetarium의 이미지

과제는 스스로...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.