сначала выкладываю сообщение об ошибках:
sergey@COMPUTER:~/Рабочий стол/myOS5$ make run
g++ -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -o port.o -c port.cpp
port.cpp: In member function ‘virtual uint8_t Port8Bit::Read()’:
port.cpp:41:6: error: input operand constraint contains ‘=’
);
^
port.cpp: In constructor ‘Port8BitSlow::Port8BitSlow(uint16_t)’:
port.cpp:48:3: error: type ‘Port’ is not a direct base of ‘Port8BitSlow’
: Port(portnumber)
^
port.cpp:48:18: error: no matching function for call to ‘Port8Bit::Port8Bit()’
: Port(portnumber)
^
port.cpp:16:1: note: candidate: Port8Bit::Port8Bit(uint16_t)
Port8Bit::Port8Bit(uint16_t portnumber)
^
port.cpp:16:1: note: candidate expects 1 argument, 0 provided
In file included from port.cpp:2:0:
port.h:17:11: note: candidate: Port8Bit::Port8Bit(const Port8Bit&)
class Port8Bit : public Port
^
port.h:17:11: note: candidate expects 1 argument, 0 provided
port.cpp: In member function ‘virtual uint16_t Port16Bit::Read()’:
port.cpp:94:6: error: input operand constraint contains ‘=’
);
^
port.cpp: In member function ‘virtual uint32_t Port32Bit::Read()’:
port.cpp:128:6: error: input operand constraint contains ‘=’
);
^
port.cpp: In member function ‘virtual uint8_t Port8Bit::Read()’:
port.cpp:41:6: error: input operand constraint contains ‘=’
);
^
port.cpp: In member function ‘virtual uint16_t Port16Bit::Read()’:
port.cpp:94:6: error: input operand constraint contains ‘=’
);
^
port.cpp: In member function ‘virtual uint32_t Port32Bit::Read()’:
port.cpp:128:6: error: input operand constraint contains ‘=’
);
^
Makefile:9: ошибка выполнения рецепта для цели «port.o»
make: *** [port.o] Ошибка 1
sergey@COMPUTER:~/Рабочий стол/myOS5$ make clean
rm -f loader.o gdt.o port.o kernel.o mykernel.bin mykernel.iso
sergey@COMPUTER:~/Рабочий стол/myOS5$ make run
as --32 -o loader.o loader.s
g++ -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -o gdt.o -c gdt.cpp
g++ -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -o port.o -c port.cpp
port.cpp: In member function ‘virtual uint8_t Port8Bit::Read()’:
port.cpp:41:6: error: input operand constraint contains ‘=’
);
^
port.cpp: In constructor ‘Port8BitSlow::Port8BitSlow(uint16_t)’:
port.cpp:48:3: error: type ‘Port’ is not a direct base of ‘Port8BitSlow’
: Port(portnumber)
^
port.cpp:48:18: error: no matching function for call to ‘Port8Bit::Port8Bit()’
: Port(portnumber)
^
port.cpp:16:1: note: candidate: Port8Bit::Port8Bit(uint16_t)
Port8Bit::Port8Bit(uint16_t portnumber)
^
port.cpp:16:1: note: candidate expects 1 argument, 0 provided
In file included from port.cpp:2:0:
port.h:17:11: note: candidate: Port8Bit::Port8Bit(const Port8Bit&)
class Port8Bit : public Port
^
port.h:17:11: note: candidate expects 1 argument, 0 provided
port.cpp: In member function ‘virtual uint16_t Port16Bit::Read()’:
port.cpp:94:6: error: input operand constraint contains ‘=’
);
^
port.cpp: In member function ‘virtual uint32_t Port32Bit::Read()’:
port.cpp:128:6: error: input operand constraint contains ‘=’
);
^
port.cpp: In member function ‘virtual uint8_t Port8Bit::Read()’:
port.cpp:41:6: error: input operand constraint contains ‘=’
);
^
port.cpp: In member function ‘virtual uint16_t Port16Bit::Read()’:
port.cpp:94:6: error: input operand constraint contains ‘=’
);
^
port.cpp: In member function ‘virtual uint32_t Port32Bit::Read()’:
port.cpp:128:6: error: input operand constraint contains ‘=’
);
^
Makefile:9: ошибка выполнения рецепта для цели «port.o»
make: *** [port.o] Ошибка 1
sergey@COMPUTER:~/Рабочий стол/myOS5$
Теперь сам код исправленный спасибо @Zed
#include "port.h"
Port::Port(uint16_t portnumber)
{
this->portnumber = portnumber;
}
Port::~Port()
{
}
Port8Bit::Port8Bit(uint16_t portnumber)
: Port(portnumber)
{
}
Port8Bit::~Port8Bit()
{
}
void Port8Bit::Write(uint8_t data)
{
__asm__ volatile (
"outb %0, %1"
:
: "a" (data), "Nd" (portnumber)
);
}
uint8_t Port8Bit::Read()
{
uint8_t result;
__asm__ volatile (
"inb %1, %0"
:
: "=a" (result), "Nd" (portnumber)
);
return result;
}
Port8BitSlow::Port8BitSlow(uint16_t portnumber)
: Port(portnumber)
{
}
Port8BitSlow::~Port8BitSlow()
{
}
void Port8BitSlow::Write(uint8_t data)
{
__asm__ volatile (
"outb %0, %1\njmp 1f\n1: jmp 1f\n1:"
:
: "a" (data), "Nd" (portnumber)
);
}
Port16Bit::Port16Bit(uint16_t portnumber)
: Port(portnumber)
{
}
Port16Bit::~Port16Bit()
{
}
void Port16Bit::Write(uint16_t data)
{
__asm__ volatile (
"outw %0, %1"
:
: "a" (data), "Nd" (portnumber)
);
}
uint16_t Port16Bit::Read()
{
uint16_t result;
__asm__ volatile (
"inw %1, %0"
:
: "=a" (result), "Nd" (portnumber)
);
return result;
}
Port32Bit::Port32Bit(uint16_t portnumber)
: Port(portnumber)
{
}
Port32Bit::~Port32Bit()
{
}
void Port32Bit::Write(uint32_t data)
{
__asm__ volatile (
"outl %0, %1"
:
: "a" (data), "Nd" (portnumber)
);
}
uint32_t Port32Bit::Read()
{
uint32_t result;
__asm__ volatile (
"inl %1, %0"
:
: "=a" (result),"Nd" (portnumber)
);
return result;
}
Заранее спасибо за ответ
Результат после первого двоеточия должен быть:
uint8_t Port8Bit::Read()
{
uint8_t result;
__asm__ volatile (
"inb %1, %0"
: "=a" (result)
: "Nd" (portnumber)
);
return result;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Вывожу ошибки там знак присваивания = постоянно в ошибке фигурирует что делать
у меня такая ситуация : нужно сделать софт который будет по видео распознавать машины и какой размер они занимают на картинке, на фоне дороги,...