|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.09.2011, 22:55 | #1 |
Пользователь
Регистрация: 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. |
22.09.2011, 23:13 | #2 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
rdtsc имплементирована на всех AMD64 процессорах.
Думаю, проблема на самом деле в том, что у тебя в опциях затесались совсем старые процессоры, проверь. Правда, у этой команды есть некоторая проблема с точностью результата на многоядерных процах, и AMD это признает. Но на генератор случайных чисел это не должно оказывать никакого влияния.
Предпочитаю на "ты".
|
22.09.2011, 23:19 | #3 |
Пользователь
Регистрация: 02.05.2011
Сообщений: 45
|
Все, получилось! Вместо команды rdtsc, оказывается, можно написать
Код:
Последний раз редактировалось pupilMartyr; 22.09.2011 в 23:28. |
22.09.2011, 23:32 | #4 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Построчно не могу, у меня тут нет ассемблера (и я даже не знаю, какой у тебя).
Где-то в опциях должно бвть что-то типа Generated Code, а там что-то вроде Target Processor. Поищи. Ты пойми, что ассемблер компилирует НЕ СМОТРЯ на то, какой проц у тебя стоит в компе. Ты же можешь работать, например, на самом новом проце (ты же крутой программер!)), а код делать для многих других, у кого старые машины. Поэтому по умолчанию обычно включено всякое старье. Если ты рассчитываешь на архитектуру 64, тебе надо обязательно выбросить старые процы и включить новые.
Предпочитаю на "ты".
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С\С++ Дана последовательность чисел. Найти количество различных чисел в этой последовательности | 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 |