всёравно файл не компилиться там какие-то ошибки port.cpp

197
10 июня 2018, 06:30

сначала выкладываю сообщение об ошибках:

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;
}    

Заранее спасибо за ответ

Answer 1

Результат после первого двоеточия должен быть:

uint8_t Port8Bit::Read()
{
    uint8_t result;
    __asm__ volatile (
        "inb %1, %0"
        : "=a" (result)
        : "Nd" (portnumber)
    );
    return result;
}
READ ALSO
В Visual Studio Code ошибок нет но некомпилируется файл port.cpp

В Visual Studio Code ошибок нет но некомпилируется файл port.cpp

Вывожу ошибки там знак присваивания = постоянно в ошибке фигурирует что делать

200
шаблонные классы

шаблонные классы

помогите разобраться с шаблонными классами

264
OpenCV Какой алгоритм лучше выбрать?

OpenCV Какой алгоритм лучше выбрать?

у меня такая ситуация : нужно сделать софт который будет по видео распознавать машины и какой размер они занимают на картинке, на фоне дороги,...

159