Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2011, 22:55   #1
pupilMartyr
Пользователь
 
Аватар для pupilMartyr
 
Регистрация: 02.05.2011
Сообщений: 45
Вопрос Ассемблер_генератор_случайных чисел

Здравствуйте. Подскажите, пожалуйста, существует какой-либо аналог функции rdtsc в ассемблере. Нужно построить генератор случайных чисел и я воспользовалась готовым кодом Минимальный генератор Парка-Миллера http://www.manhunter.ru/assembler/5_...semblere.html#. Все прекрасно работает кроме rdtsc. Компилятор пишет:
rdtsc
**Error** prog.asm(337) Illegal instruction
Поискала в интернете, пишут, что эта команда работает только на Pentium. У меня AMD 64 и необходимо, чтобы на ней работала. Если кто-то знает аналог данной команды, чтобы работала для AMD 64, подскажите. Спасибо.
Кстати, на сайте http://www.wasm.ru/article.php?article=hardzen интересное предложение. "После выполнения инструкции RDTSC (у кого на нее ругается компилятор – db 0fh,031h) регистры EDX:EAX содержат текущее значение счетчика".Что значит "у кого на нее ругается компилятор – db 0fh,031h"?

Последний раз редактировалось pupilMartyr; 22.09.2011 в 23:05.
pupilMartyr вне форума Ответить с цитированием
Старый 22.09.2011, 23:13   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

rdtsc имплементирована на всех AMD64 процессорах.
Думаю, проблема на самом деле в том, что у тебя в опциях затесались совсем старые процессоры, проверь.

Правда, у этой команды есть некоторая проблема с точностью результата на многоядерных процах, и AMD это признает. Но на генератор случайных чисел это не должно оказывать никакого влияния.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 22.09.2011, 23:19   #3
pupilMartyr
Пользователь
 
Аватар для pupilMartyr
 
Регистрация: 02.05.2011
Сообщений: 45
По умолчанию

Все, получилось! Вместо команды rdtsc, оказывается, можно написать
Код:
db 0fh
db 031h
и все работает. Спасибо за помощь!

Последний раз редактировалось pupilMartyr; 22.09.2011 в 23:28.
pupilMartyr вне форума Ответить с цитированием
Старый 22.09.2011, 23:32   #4
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Построчно не могу, у меня тут нет ассемблера (и я даже не знаю, какой у тебя).
Где-то в опциях должно бвть что-то типа Generated Code, а там что-то вроде Target Processor.
Поищи.
Ты пойми, что ассемблер компилирует НЕ СМОТРЯ на то, какой проц у тебя стоит в компе. Ты же можешь работать, например, на самом новом проце (ты же крутой программер!)), а код делать для многих других, у кого старые машины. Поэтому по умолчанию обычно включено всякое старье. Если ты рассчитываешь на архитектуру 64, тебе надо обязательно выбросить старые процы и включить новые.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С\С++ Дана последовательность чисел. Найти количество различных чисел в этой последовательности yuliyayuliya Помощь студентам 1 14.04.2011 06:30
Найти среди чисел пару чисел с минимальной по модулю разностью stas135642 Общие вопросы C/C++ 2 31.10.2010 12:40
Delphi. найти последовательность всех чисел от 1 до n, кроме чисел с одинаковыми цифрами bayda06 Помощь студентам 7 01.07.2010 18:18
Ввести несколько чисел (кол-во чисел запрашивать с экрана). Определить, сколько чисел, меньших заданного Lirika Помощь студентам 0 08.05.2010 21:39
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных Белка Помощь студентам 3 27.10.2007 11:53