有这个汇编器插入到函数中:
void func(void*, int, int, int, int, int, void*, int offset){
...
__asm__ __volatile__ (
"pushl %%ebp,\n\t" // save EBP register
"movl 0x24(%%ebp), %%ebp\n\t" // 0x24 - "offset" param
"int $0x40\n\t"
"popl %%ebp" // restore EBP register
...
::"a"(65)
...
);
你能解释一下为什么使用pushl而不是push以及关于\n\t
l
- 表示将一个4字节的值LINK放入堆栈但这
push
只是来自英特尔的汇编器LINK更多链接
\n\t
- 表示不可打印字符的特殊字符:行尾和制表符。