2013-05-15 2 views
2

Изображение показывает, как я загрузил адреса массива из 10 байтовых элементов в качестве значений в массив указателей. Я намерен сортировать этот массив, ПОЗЖЕ.Используйте printf для печати значений, на которые ссылается массив указателей

На данный момент я застреваю, пытаясь разыменовать эти сохраненные адреса, чтобы использовать функцию printf C++ для печати фактических значений массива на экране из этого массива Ptr.

У меня нет никаких проблем, распечатав массив элементов с помощью метода Printf, который выглядит как-то

fld tword [Array] 
fstp tword [rsp] 
mov rsi,rsp 
mov rdi, "String which is defined above %Lf ..." 
call printf 

Любые идеи для делать что-то похожее на это, если мои значения массива держать адреса указателя?

enter image description here

+0

TWORD? Являются ли эти IEEE 80-битные значения с плавающей запятой? –

+0

Значения в массиве 80-бит. Мой профессор сказал нам, что указатели на данные - 64 бит. –

ответ

0

printf по-прежнему будет ожидать вашего значение с плавающей точкой на стеке, так (от верхней части головы), что может быть что-то вроде

mov rax, offset [Pts] 
fld tword [rax] 
fstp tword [rsp] 
mov rsi,rsp 
mov rdi, "String which is defined above %Lf ..." 
call printf 
+0

Я следую, это должно работать. Он распечатывает все 0.0 для результатов, что заставляет меня думать, что мое создание массива указателей где-то перепуталось. Большое спасибо за ответ. Я дам вам знать, если я получу его! Береги себя. –

+0

Я понял. У меня было аналогичное решение, но я пытался перевести прямо на rsp, который я забыл, не допускается. Единственная настройка вашего решения - скобка Pts. Еще раз спасибо! –

+0

Я исправил его, thx. –

Смежные вопросы