Я пишу новую операционную систему и столкнулся с непредвиденным поведением ядра
проблема в файле kernel\kernel.asm
0x00008122: bb 00 81 movw $0x8100, %bx
0x00008125: 50 pushw %ax
0x00008126: b8 00 00 movw $0, %ax
0x00008129: 8e c0 movw %ax, %es
0x0000812b: 58 popw %ax
0x0000812c: cd 13 int $0x13
0x0000812e: 00 00 addb %al, (%bx, %si)
0x00008130: 00 00 addb %al, (%bx, %si)
0x00008132: 00 00 addb %al, (%bx, %si)
0x00008134: 00 00 addb %al, (%bx, %si)
0x00008136: 00 00 addb %al, (%bx, %si)
0x00008138: 00 00 addb %al, (%bx, %si)
0x0000813a: 00 00 addb %al, (%bx, %si)
0x0000813c: 00 00 addb %al, (%bx, %si)
0x0000813e: 00 00 addb %al, (%bx, %si)
0x00008140: 00 00 addb %al, (%bx, %si)
0x00008142: 00 00 addb %al, (%bx, %si)
0x00008144: 00 00 addb %al, (%bx, %si)
qemu-system-i386 -hda collector.bin -d in_asm,exec,cpu -D log
Как из файла ассемблера (NASM) запустить exe-шник?
Не отдельно, а как-будто ассемблерский файл это и есть ос?
Не понимаю, откуда эта ошибка появляется
template <typename T>
void create_huge_matrix(std::vector<std::vector<T>>& matrix, T lowerLimit);
std::vector<std::vector<double>>
, а второй -- int
:create_huge_matrix(matrix_s, 5);
create_huge_matrix(matrix_p);
перегрузка оператора должна скалярно умножать два массива. Под этим подразумевается, например: массив1 - 3,2; массив2 - 5,1, скалярное умножение: 3*5 + 2*1 = 17
LabArray operator* (const LabArray& other) { double sum = 0; for (int i = 0; i < size; ++i) { sum += Array[i] * other.Array[i]; } return sum; }
isdigit
int count_students;
cin >> count_students;
cin >> count_students;
if (cin.fail()) {
cout << "Неправильные входные данные. Попробуйте еще раз.";
cin.clear();
cin.ignore();
goto Step1;
}
Ne sovsem ponyatno kak ispravit
../deps/source-sdk-2013/mp/src/public/tier0/threadtools.h:1130
А в чем заключаются эти ошибки, я не могу понять
"push edi"
"push esi"
"mov edx,lenS"
...
как их исправить
мне бы не помешали еще примеры хорошие
#include <iostream>
int main()
{
char s1[] = "Hola queridos amigos";
char tmp;
asm ("mov (%[left]), %[tmp]\n\t"
"xchg (%[right]), %[tmp]\n\t"
"mov %[tmp], (%[left])\n\t"
: [tmp] "=&q"(tmp)
: [left] "r"(s1), [right] "r"(s1 + sizeof(s1) - 2)
: "memory");
std::cout<<s1<<std::endl;
return 0;
}