Assembly 在树莓皮上组装;错误:错误指令“;在大多数代码行中

Assembly 在树莓皮上组装;错误:错误指令“;在大多数代码行中,assembly,raspberry-pi,raspberry-pi3,raspbian,raspberry-pi2,Assembly,Raspberry Pi,Raspberry Pi3,Raspbian,Raspberry Pi2,所以,我在大学里学习组装,在那里我们用软呢帽。在那里,我们毫无困难地编译程序。 我得到了一个树莓圆周率,我正在尝试它与一些程序,我们以前做过,没有什么新奇的。但是我犯了一些我以前从未见过的错误,我搜索了整个互联网,似乎无法找到答案。 这也不是一个64 x 32位的问题。 我曾经尝试过使用gcc-olab6lab6.s,就像我们在课堂上所做的那样,但是得到了相同的错误 守则: /* int nums[] = {10, -21, -30, 45}; int main() { int i, *p;

所以,我在大学里学习组装,在那里我们用软呢帽。在那里,我们毫无困难地编译程序。 我得到了一个树莓圆周率,我正在尝试它与一些程序,我们以前做过,没有什么新奇的。但是我犯了一些我以前从未见过的错误,我搜索了整个互联网,似乎无法找到答案。 这也不是一个64 x 32位的问题。 我曾经尝试过使用gcc-olab6lab6.s,就像我们在课堂上所做的那样,但是得到了相同的错误

守则:

/*
int nums[] = {10, -21, -30, 45};
int main() {
  int i, *p;
  for (i = 0, p = nums; i != 4; i++, p++)
    printf("%d\n", *p);
  return 0;
}
*/

.data
nums:  .int  10, -21, -30, 45
Sf:  .string "%d\n"    ; string de formato para printf

.text
.globl  main
main:

/********************************************************/
/* mantenha este trecho aqui e nao mexa - prologo !!!   */
  pushq   %rbp
  movq    %rsp, %rbp
  subq    $16, %rsp
  movq    %rbx, -8(%rbp)
  movq    %r12, -16(%rbp)
/********************************************************/

  movl  $0, %ebx  /* ebx = 0; */
  movq  $nums, %r12  /* r12 = &nums */

L1:
  cmpl  $4, %ebx  /* if (ebx == 4) ? */
  je  L2          /* goto L2 */

  movl  (%r12), %eax    /* eax = *r12 */

/*************************************************************/
/* este trecho imprime o valor de %eax (estraga %eax)  */
  movq    $Sf, %rdi    /* primeiro parametro (ponteiro)*/
  movl    %eax, %esi   /* segundo parametro  (inteiro) */
  call  printf       /* chama a funcao da biblioteca */
/*************************************************************/

  addl  $1, %ebx  /* ebx += 1; */
  addq  $4, %r12  /* r12 += 4; */
  jmp  L1         /* goto L1; */

L2:  
/***************************************************************/
/* mantenha este trecho aqui e nao mexa - finalizacao!!!!      */
  movq  $0, %rax  /* rax = 0  (valor de retorno) */
  movq  -8(%rbp), %rbx
  movq  -16(%rbp), %r12
  leave
  ret      
/***************************************************************/
错误消息: pi@raspberrypi:~/Documents/inf1018\u LUIZA$as-o lab6.o lab6.s lab6.s:汇编程序消息: lab6.s:13:错误:错误指令
字符串格式转换为para printf'
lab6.s:21:错误:错误指令
pushq%rbp' lab6.s:22:错误:错误指令
movq%rsp,%rbp'
lab6.s:23:错误:错误指令
subq$16,%rsp' lab6.s:24:错误:错误指令
movq%rbx,-8(%rbp)'
lab6.s:25:错误:错误指令
movq%r12,-16(%rbp)' lab6.s:28:错误:错误指令
movl$0,%ebx'
lab6.s:29:错误:错误指令
movq$nums,%r12' lab6.s:32:错误:错误指令
cmpl$4,%ebx'
lab6.s:33:错误:错误指令
je L2' lab6.s:35:错误:错误指令
movl(%r12),%eax'
lab6.s:39:错误:错误指令
movq$Sf,%rdi' lab6.s:40:错误:错误指令
movl%eax,%esi'
lab6.s:41:错误:错误指令
调用printf' lab6.s:44:错误:错误指令
addl$1,%ebx'
lab6.s:45:错误:错误指令
addq$4,%r12' lab6.s:46:错误:错误指令
jmpl1'
lab6.s:51:错误:错误指令
movq$0,%rax' lab6.s:52:错误:错误指令
movq-8(%rbp),%rbx'
lab6.s:53:错误:错误指令
movq-16(%rbp),%r12' lab6.s:54:错误:错误指令
leave'

lab6.s:55:错误:错误指令
ret'

您的RPi有ARM CPU。您正在尝试使用ARM汇编器组装x86-64程序集,因此没有任何代码是有效的ARM指令是正常的。查看RPi上C程序的
gcc-S
输出。