プロが教えるわが家の防犯対策術!

このCコードをアセンブリ プログラム(ARMアセンブリ)に変更するにはどうすればよろしいでしょうか?

#include <stdio.h>

int main()
{
int n;

//prompt and input number from user
printf("Enter number: ");
scanf("%d",&n);

//loop around form 1 to n
for(int i=1;i<n;i++){
//check for divisors
if(n%i == 0)
//print divisor
printf("%d ",i);
}

printf("\n");

return 0;
}

質問者からの補足コメント

  • どう思う?

    コードしてコンパイルしたいです。(アッセンブリープログラミングで)

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/02/27 09:21

A 回答 (3件)

コンパイラによって違うんじゃないかしらん。


例えばgccだと、提示ソースファイルをchakisann_01.cとすれば、

gcc -S chakisann_01.c

と打ちます。
その辺はだからコンパイラのマニュアル調べてみるべきですね。
ちなみに、上の結果はインテルCPUだと

  .file "chakisann_01.c"
  .text
  .section .rodata
.LC0:
  .string "Enter number: "
.LC1:
  .string "%d"
.LC2:
  .string "%d "
  .text
  .globl main
  .type main, @function
main:
.LFB0:
  .cfi_startproc
  endbr64
  pushq %rbp
  .cfi_def_cfa_offset 16
  .cfi_offset 6, -16
  movq %rsp, %rbp
  .cfi_def_cfa_register 6
  subq $16, %rsp
  movq %fs:40, %rax
  movq %rax, -8(%rbp)
  xorl %eax, %eax
  leaq .LC0(%rip), %rdi
  movl $0, %eax
  call printf@PLT
  leaq -16(%rbp), %rax
  movq %rax, %rsi
  leaq .LC1(%rip), %rdi
  movl $0, %eax
  call __isoc99_scanf@PLT
  movl $1, -12(%rbp)
  jmp .L2
.L4:
  movl -16(%rbp), %eax
  cltd
  idivl -12(%rbp)
  movl %edx, %eax
  testl %eax, %eax
  jne .L3
  movl -12(%rbp), %eax
  movl %eax, %esi
  leaq .LC2(%rip), %rdi
  movl $0, %eax
  call printf@PLT
.L3:
  addl $1, -12(%rbp)
.L2:
  movl -16(%rbp), %eax
  cmpl %eax, -12(%rbp)
  jl .L4
  movl $10, %edi
  call putchar@PLT
  movl $0, %eax
  movq -8(%rbp), %rcx
  xorq %fs:40, %rcx
  je .L6
  call __stack_chk_fail@PLT
.L6
  leave
  .cfi_def_cfa 7, 8
  ret
  .cfi_endproc
.LFE0:
  .size main, .-main
  .ident "GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0"
  .section .note.GNU-stack,"",@progbits
  .section .note.gnu.property,"a"
  .align 8
  .long 1f - 0f
  .long 4f - 1f
  .long 5
0:
  .string "GNU"
1:
  .align 8
  .long 0xc0000002
  .long 3f - 2f
2:
  .long 0x3
3:
  .align 8
4:

となります。
    • good
    • 0

以下のサイトで簡単に変換してくれます



Compiler Explorer
https://gcc.godbolt.org/
    • good
    • 0

コンパイルってことですか?

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!