пожалуйста.
(4 - 2.1) / 0.1
-- это целое число? Увы, нет. Давай я тебе немного помогу:#include <cmath>
#include <iostream>
#include <iomanip>
using namespace std;
int isInteger(double value)
{
cout << value << "///" << round(value) << endl;
return !(value == trunc(value));
}
int stepSize_check(double step, double startNum, double endNum)
{
double mod;
mod = (endNum - startNum) / step;
cout << "mod: " << std::setprecision(20) << mod << endl;
if (isInteger(mod))
return (1);
return (0);
}
int main()
{
double a = 2.1;
double b = 4;
double h = 0.1;
cout << "result: " << endl << stepSize_check(h, a, b) << endl;
return (0);
}
result:
mod: 18.999999999999996447
18.999999999999996447///19
1
Этот шаг должен удовлетворять условию, что: ((startingPoint - endPoint) / step) = целочисленный. При startingPoint < endPoint.
mul имеет только один операнд, и как в данном случае умножить bx на cols я недопонимаю
mov ax, si
mul cols
mov bx, ax
а в принципе код верный?
; Если элемент выше диагонали, сохраняем его индекс в регистре bx
mov bx, si ; Загружаем индекс строки в bx
mov al, cols
mul al ; Умножаем индекс строки (bx) на количество столбцов (cols)
Компилятор Си в программу, естественно, встраивает проверку этого флага и аварийно завершает.
schedule
в uc_link
перед вызовом makecontext
schedule
так, чтобы она не возвращалась, а либо переключала контекст на следующий поток, либо (когда нет активных потоков) ждала создания нового потокаThread::func
С++, благодаря уже стандартным архитектурным решениям ООП, позволяет сделать это погружение легким
высокоуровневая логика четко отделена от возни с байтами
Но он же явно хотел в monitor_thread переключать контексты.
message
написано прямо в функции печати, то очевидный ответ на это: "не надо так делать". Хочешь напечатать сообщение -- передавай адрес строки с сообщением как параметр функции. ошибка появится если скопируешь и вставишь message db 'Flex OS' после первого message
string message = "hello";
string message = "world";
cout << message << ' ' << message;
message
, а как-то более осмысленно, например banner_message
, а другую строку -- по-другому, в соответствии тому, какую функцию она несёт?
Проверь пожалуйста? Моя теория: добавление dev_err приводит к вызову этой функции, которая должна и так вызываться из обработчика прерывания, но почему-то не вызывается, возможно из-за гонки между прерыванием и окончанием TX DMA.
Rarebeast666, я не вижу прямой связи этой опции с DMA. Правда и прямого указания использовать/не использовать DMA я не вижу. Мне кажется, проще всего отключить DMA в коде, например здесь заменить
up->dma = &data->data.dma;
наup->dma = NULL;
.