小编Yon*_*onk的帖子

如何检查有符号整数是否为负或位?

我是x86汇编语言的新手,我有一个保存在寄存器中的有符号整数eax,我想检查数字是负数还是正数.为此,我用bt指令检查第一位.

这是我做的:

bt eax,0
jnc isNegative
Run Code Online (Sandbox Code Playgroud)

bt第一位携带标志,我用来jnc检查进位标志是0还是1.如果是1,它应该是负数,并做负指令...但是,输出是不可预测的,有时我有一个积极的,它认为它是一个负数.难道我做错了什么?

编辑:我刚刚意识到它可能与endianess有关.它实际上是检查最后一位而不是第一位.让我试试吧bt,7

x86 assembly

10
推荐指数
2
解决办法
3万
查看次数

基类的函数指针指向子类的成员函数?

我知道这听起来令人困惑,我有一个基本模板类,它有一个函数指针,一个子类(不再是模板类)需要使用该函数指针指向子类的成员函数,我得到所有各种错误..我是否违反了一些C++的普遍规律?这是伪代码:

template <class T>
class Base{
    public:
       typedef void (Base<T>::*fptr) (char in);
       void funcA(fptr FuncToCall){
                 FuncToCall('a');
       }
       ...
    };

class Child:public Base<char>{
   public: 
       void funcToCall(){...}
       void funcB(){
          funcA(funcToCall);
       }
}
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误消息:

错误C2664:'Base <T> :: funcA':无法将参数1从'void(__ thiscall Child ::*)(char)'转换为'void(__thiscall Base <T> ::*)(char)'

c++ inheritance function-pointers

3
推荐指数
1
解决办法
2903
查看次数

标签 统计

assembly ×1

c++ ×1

function-pointers ×1

inheritance ×1

x86 ×1