有一个汇编器插入
int offset = 4;
__asm__ __volatile__(
"pushl %%ebp\n\t"
"int $0x40\n\t"
"popl %%ebp"
::
"a"(45),
"b"(40), // Здесь передаются еще какие то значения, но это неважно
"c"(4),
"d"(5),
"S"(9),
"D"(0)
);
所以,中断需要通过ebp寄存器传递一个参数(即offset变量)。即使在阅读了各种资料后,我仍然不明白,但它需要完成。
也就是说,在汇编程序中,这段代码应该看起来像这样(偏移量是从上面的某个地方传输的):
mov 45, eax
mov 40, ebx,
mov 4, ecx
mov 5, edx,
mov 9, esi
mov 0, edi
pushl ebp
mov offset, ebp
int 40h
popl ebp
用汇编程序单独编写不是我的选择
可以这样做:
X 表示变量来自哪里并不重要,来自内存还是寄存器
所有基本字符的列表
我想,它应该有效,我希望......