Я должен перебирать стека временного перемещения значения слов к регистру, что-то вроде этого:Iterate стек в AT & T x64 сборки
movq ((i - 3)*8)(%rsp), %esi
или
movq %rcx, %rbx # where %rcx is the counter
subq $3, %rbx
movq $8, %rax
mulq %rbx
movq (%rbx)(%rsp), %esi
Но очевидно, ни одна из вышеперечисленных работ, так как я должен изменить ее, чтобы она работала?
почему вы не делаете непосредственно 'мов еси, [RSP + RCX * 8-24]'? (Я не мог потрудиться с синтаксисом AT & T, извините). ... кстати, не очевидно, почему ваш не работает. Я бы предположил, что компилятор не любит дополнительные скобки? Может быть, 'movq -24 (% rsp,% rcx, 8),% esi' - синтаксис AT & T? Я не хочу возиться с этим, blargh. Прочитайте некоторые документы, если вы действительно этого хотите. – Ped7g
@ Ped7g ваш ответ является самой прямой интерпретацией 'movq ((i-3) * 8) (% rsp),% esi', за исключением обоих случаев, 64-битное значение не может быть перенесено в 32-битный регистр , поэтому он должен быть «movl». Кроме того, вы должны быть сформулированы как ответ, поэтому читатели, просматривающие список вопросов, могут видеть, что на него был дан ответ, и в идеале OP отмечает, что он является решением. –
@ Ped7g В синтаксисе AT & T это 'mov -24 (% rsp,% rcx, 8),% esi'. – fuz