欢迎光临散文网 会员登陆 & 注册

好好好,这样写是吧

2023-08-29 09:28 作者:李台贾高速  | 我要投稿

我突然有了更深的理解,谢谢UP:

#include <iostream>

#include <cstdint>

// CPU Architecture Detection

#if defined(__x86_64__)

#define ARCH "x86_64"

#elif defined(__i386__)

#define ARCH "x86"

#elif defined(__arm__)

#define ARCH "ARM"

#else

#define ARCH "Unknown"

#endif


#define BEGIN int main() {

#define END return 0; }

#define CODE0 if

#define CODE1 elif

#define CODE2 else

#define ADD(x, y) x + y

#define SUB(x, y) x - y

#define MUL(x, y) x * y

#define DIV(x, y) x / y


#define ALLOC(size) (int*)malloc(size * sizeof(int))

#define FILL(data, code) do { \

  for (int i = 0; i < sizeof(data)/sizeof(data[0]); i++) { \

    data[i] = code; \

  } \

} while (0)

#define EXEC(func, args) func(args)


#define ARRAY int* array;

#define FUNCTION int function(int* data, int size) {

#define LOOP for (int i = 0; i < size; i++) {

#define CHECK0 if (i == size) goto code2;

#define CHECK1 if (i[data] & 1) goto code1;

#define OPER result += i[data];

#define MODIFY i -= 0xFFFFFFFF;

#define GOTO0 goto code0;

#define GOTO1 goto code1;

#define GOTO2 goto code2;

#define RETURN return result; }

BEGIN

  ARRAY

  if (ARCH == "x86_64") {

    array = ALLOC(6);

    FILL(array, 0x90);

    EXEC((int(*)(int*, int))array, array);

  } else if (ARCH == "x86") {

    array = ALLOC(6);

    FILL(array, 0x91);

    EXEC((int(*)(int*, int))array, array);

  } else if (ARCH == "ARM") {

    array = ALLOC(6);

    FILL(array, 0xE1A00000);

    EXEC((int(*)(int*, int))array, array);

  } else {

    array = nullptr;

  }


  FUNCTION

    int result = 0;

    LOOP

      CHECK0

      CHECK1

      OPER

      MODIFY

      GOTO0

    CODE1

      MODIFY

      GOTO0

    CODE2

      RETURN

  END

  if (array) free(array);


好好好,这样写是吧的评论 (共 条)

分享到微博请遵守国家法律