组装 x86 nasm yasm

问题描述

为什么当我在 sumLoop 中尝试 push eax 添加一行代码时,我收到一个错误错误:操作数 1 的大小无效

但是当我添加 push rsi 时一切都很好

x86_64 Linux 程序集

代码

; -----
; Define constants
EXIT_SUCCESS equ 0 ; successful operation
SYS_exit equ 60 ; call code for terminate
; -----
; Define Data.
section .data
    tab dq 1002,1004,1006,1008,10010
    len dd 5
    num dd 10
; ********************************************************
section .text
global _start
_start:
    ; -----
    ; Summation loop.
    mov ecx,dword [len] ; get length value
    mov rsi,0 ; index=0
sumLoop:
    mov eax,dword [tab+(rsi*8)] ; get tab[rsi]
    ;add dword [sum],eax ; update sum
    sub eax,dword [num]
    push eax ; push eax on stack
    inc rsi ; next item
    loop sumLoop
; -----

; Done,terminate program.
last:
    mov rax,SYS_exit ; call code for exit
    mov rdi,EXIT_SUCCESS ; exit with success
    syscall

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...