sjlj (setjump/longjump)与dwarf-2为mingw32两种异常处理模型的实现.sjlj有着开销,而随linux发行的mingw32开发库包都是用sjlj版编译的,而Qt却采用dwarf-2版,那么两者之间有多少差异,本文就这问题对两版的异常代码的反汇编进行分析比较. 我使用mingw-w65-i686-810的sjlj与dwarf-2两个版本对下面异常代码编译. __attribute__((dllimport)) int dllfunc(); int main() {…
编译环境:Windows 10 + VS2015 1.问题引入 在Win32环境下,CPU小端模式,参数用栈来传递,写出输出结果. 代码如下: int main() { long long a = 1; long long b = 2; long long c = 3; printf("%d%d%d", a, b, c);//输出结果102 return 0; } 反汇编代码如下: int main() { 010C2AB0 push ebp 010C2AB1 mov ebp,esp…