标签: algorithm visual-studio assembly hex division
我有这个代码用于从Visual Studio 2015编译的程序中查找低于1000的3或4的乘法。
我可以识别循环的每个部分,并且可以理解除第一部分之外的每个部分。我得到乘法的乘法的高位和0xAAAAAAAB将存储在edx中,然后除以2并乘以3,然后如果结果与原始数字相同(在本例中为i),那么是3的倍数。我只是不知道为什么这是真的,它背后的逻辑是什么,也许最重要的是0xAAAAAAA来自哪里。
这种方法对我来说似乎也有些过分。为什么它不只是做一个div,从寄存器中得到余数?