Форум программистов, компьютерный форум CyberForum.ru

__asm вставки (процессор Pentium) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Генерация случайного числа больше нуля, но меньше единицы http://www.cyberforum.ru/cpp-beginners/thread811477.html
Всем привет. Подскажите, как можно генерировать псевдослучайное число больше нуля, но меньше единицы. При этом количество цифр после точки должно быть от 16 до 18 включительно. Заранее всем спасибо.
C++ Исправить ошибки в связном списке Почти готовая лабораторка, но не хватает несколько деталей. Помогите решить проблему, пожалуйста! Задание : 1. Создание списка из файла. 2.Insert <елемент> n Вставка елемента в позицию n. 3. DELETE N Удаление елемента з N позиции. 4.CHANGE M N – Смена елементов M N . 5.DUMP Вывод в конечный файл . Все работает, но когда открываю текстовый файл со списком или отчетом, вместо элементов... http://www.cyberforum.ru/cpp-beginners/thread811474.html
C++ Составить программу с аппроксимацией
С пятой задачей помогите. В голову ничего не лезит
сигнатуры C++
помогите соорудить или предложите свои варианты: 1. сканирование сигнатур байт в другой программе, адрес определить никак нельзя, так как он динамический(при перезаходе в программу все адреса меняются,байты остаются прежними) 2.массив к примеру 3C 6B 61 54 74 00 00 01 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX...
C++ Почему не стоит создавать массив объектов? http://www.cyberforum.ru/cpp-beginners/thread811460.html
Нам преподаватель сказал, что создавать массив объектов лучше не стоит(надо создавать массив указателей на объекты) так как при наследовании что-то там происходит с преобразованиями типов и привёл пример того, как не стоит писать. Вот пример: class A { public virtual int f()=0; } class B: public A
C++ Rand - рандом не повторяющихся чисел Добрый вечер.Подскажите пожалуйста как сделать что бы рандомные числа не повторялись ? Понимаю что во внутрь надо положить цикл от 0 до i-1 если совпадет то повторять .. но не магу понять как реализовать. for ( i=0; i < c; i++) { B = 1 + rand()%11; // случайные числа от 1 до 11 printf("%d ",B ); } подробнее

Показать сообщение отдельно
_Ivana
2887 / 1712 / 148
Регистрация: 01.03.2013
Сообщений: 4,883
Записей в блоге: 2
18.03.2013, 03:09  [ТС]     __asm вставки (процессор Pentium)
Скопипастил этот кусок кода в свою функцию - на этапе компиляции выдает кучу ошибок. Придется с этим разбираться... Собственно, основная функция работает, если не вызывать вложенную функцию а писать её содержимое несколько раз в коде. Хотел сделать красиво - вынести наружу, но навскидку не получилось, ни функцией ни макросом. Сама эта подфункция проста до безобразия, никаких входных-выходных параметров, использует и изменяет только один регистр, никаких окружающих контекстов не надо сохранять. Неужели нет красивого решения этого вопроса - написать не макросом а функцией несколько простейших операций с регистром без сохранения контекста в стек?
Все равно спасибо за науку, буду ковыряться дальше.

Добавлено через 40 минут
Нашел листинг - увидел много нового и интересного Не думал, что мои простые операции компилятор будет окружать таким.... вниманием
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
void expand_CL(void)
{
004BCDB0  push        ebp  
004BCDB1  mov         ebp,esp 
004BCDB3  sub         esp,0C0h 
004BCDB9  push        ebx  
004BCDBA  push        esi  
004BCDBB  push        edi  
004BCDBC  lea         edi,[ebp-0C0h] 
004BCDC2  mov         ecx,30h 
004BCDC7  mov         eax,0CCCCCCCCh 
004BCDCC  rep stos    dword ptr es:[edi] 
    __asm{
        AND CL, BIN8(00000111)
004BCDCE  and         cl,7 
        CMP CL, 3
004BCDD1  cmp         cl,3 
        JB M1
004BCDD4  jb          M1 (4BCDD8h) 
        INC CL
004BCDD6  inc         cl   
M1:     CMP CL, 7
004BCDD8  cmp         cl,7 
        JB M2
004BCDDB  jb          M2 (4BCDDFh) 
        INC CL
004BCDDD  inc         cl   
M2:             
        //POP         <registers>   //; Restore registers
        //MOV         esp, ebp      //; Restore stack pointer
        //POP         ebp           //; Restore ebp
        //RET                       //; Return from function        
        RET
004BCDDF  ret              
    }
}
004BCDE0  pop         edi  
004BCDE1  pop         esi  
004BCDE2  pop         ebx  
004BCDE3  add         esp,0C0h 
004BCDE9  cmp         ebp,esp 
004BCDEB  call        @ILT+36925(__RTC_CheckEsp) (4B1042h) 
004BCDF0  mov         esp,ebp 
004BCDF2  pop         ebp  
004BCDF3  ret
Добавлено через 51 минуту
Спасибо людям - подсказали про директиву naked - а то бы долго думал почему в мире все так несправедливо
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
__declspec( naked ) void expand_CL(void)
{   __asm{
        AND CL, BIN8(00000111)
004BCDB0  and         cl,7 
        CMP CL, 3
004BCDB3  cmp         cl,3 
        JB M1
004BCDB6  jb          M1 (4BCDBAh) 
        INC CL
004BCDB8  inc         cl   
M1:     CMP CL, 7
004BCDBA  cmp         cl,7 
        JB M2
004BCDBD  jb          M2 (4BCDC1h) 
        INC CL
004BCDBF  inc         cl   
M2:     RET
004BCDC1  ret
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru