使用C的低级功能实现功能

我的任务是编写一个将代码编译为简化C的编译器。只允许我使用goto语句和条件if-goto语句。我的目标代码(C)中的代码行开始加载。

我的问题是:可以使用这些限制以某种方式实现功能吗?我正在寻找类似汇编语言的call之类的东西。这是我的代码现在看起来像的一个小例子。

int main() {
  int arraySize = someInt;
  int index = someInt;

  if(index>=arraySize) goto ERROR;
  if(index<0) goto ERROR;

  // At the end of the file
  goto END;
  ERROR:
    // Handle error here
  END:
  return 0;
}

现在,每当执行索引检查时,就会编写两行代码。我知道最常见的方法是创建一个将arraySize和index作为参数的函数。有没有一种方法可以仅使用gotos来实现这一点,从而使代码的执行可以从原来的位置继续进行(有点像调用)?

这是我的目标代码的实际用法。在这里您可以清楚地理解我的意思。

i7=realloc(i7,sizeof(int)*i6);
i8=1;
i0=0;
if(i0>=i6) goto ERROR;
if(i0<0) goto ERROR;
i7[i0]=i8;
i8=2;
i0=1;
if(i0>=i6) goto ERROR;
if(i0<0) goto ERROR;
i7[i0]=i8;
i8=0;
i0=2;
if(i0>=i6) goto ERROR;
if(i0<0) goto ERROR;
i7[i0]=i8;
i8=25;
i0=5;
if(i0>=i6) goto ERROR;
if(i0<0) goto ERROR;
i7[i0]=i8;
i8=9;
i0=7;
if(i0>=i6) goto ERROR;
if(i0<0) goto ERROR;
i7[i0]=i8;
评论