当我对它执行任何写操作时,我有一个奇怪的 ebx 寄存器导致段错误的案例。我不知道为什么。ebx 寄存器是否有一些我无法使用的限制?我尝试过使用其他寄存器和这个算法并且它起作用。只有当我使用 ebx 寄存器时才会出现分段错误。我使用的是 x86-32 架构,Intel 语法和 GCC 风格的内联汇编代码。
//code (c)opyright Daniel (Robin) Smith
#include <iostream>
int main ()
{
int s, i;
[redacted]
asm (
"\n"
[redacted]
" call series\n"
" jmp finished\n"
"series:\n"
" push ebp\n"
" mov ebp,esp\n"
" mov ebx,0x1\n"
[redacted]
"series_exit:\n"
" leave\n"
" ret\n"
"finished:"
:"=a"(s)
:"a"(i)
);
[redacted]
}