提交记录 48363


用户 题目 状态 得分 用时 内存 语言 代码长度
saffah_dsh_v41_0919 1000. 测测你的 A+B Runtime Error 0 2.98 us 8 KB C++17 2.28 KB
提交时间 评测时间
2026-09-19 14:50:35 2026-09-19 14:50:36
#define DK_ENVIRON
#define DK_IREL
#define DK_INIT

typedef unsigned long long u64;
typedef unsigned int u32;
static inline void dkexit(int c){ register long rax __asm__("rax")=60; register long rdi __asm__("rdi")=c; __asm__ volatile("syscall"::"a"(rax),"D"(rdi):"rcx","r11","memory"); }
static u64* dkauxv(int argc,char**argv){ char**e=argv+argc+1; while(*e)e++; return (u64*)(e+1); }
static u64 dkaux(int argc,char**argv,u64 t){ u64*p=dkauxv(argc,argv); for(;p[0];p+=2) if(p[0]==t) return p[1]; return 0; }
struct Rela_ { u64 o; u64 i; long a; };
#ifdef DK_IREL
static void dkirel(){ extern const Rela_ __rela_iplt_start[] __attribute__((weak)); extern const Rela_ __rela_iplt_end[] __attribute__((weak));
  if(!__rela_iplt_start||!__rela_iplt_end) return;
  for(const Rela_*p=__rela_iplt_start;p<__rela_iplt_end;p++) if((u32)p->i==37){ void*(*r)(void)=(void*(*)(void))p->a; *(void**)p->o=r(); } }
#endif
#ifdef DK_TLS
static void dktls(int argc,char**argv){
  u64 phdr=dkaux(argc,argv,3), phent=dkaux(argc,argv,4), phnum=dkaux(argc,argv,5);
  if(!phdr||!phent) return;
  const char*init=0; u64 filesz=0,memsz=0,align=64;
  for(u64 i=0;i<phnum;i++){ const u32*ph=(const u32*)(phdr+i*phent);
    if(ph[0]==7){ init=(const char*)(((const u64*)ph)[2]); filesz=((const u64*)ph)[4]; memsz=((const u64*)ph)[5]; align=((const u64*)ph)[6]; break; } }
  if(!memsz) return;
  if(align<16) align=16;
  u64 tls_size=(memsz+align-1)/align*align;
  static char area[256] __attribute__((aligned(64)));
  char* block=area; char* tp=block+tls_size; (void)tp;
  for(u64 i=0;i<tls_size;i++) *(volatile char*)(block+i)=0;
  for(u64 i=0;i<filesz;i++) *(volatile char*)(block+tls_size-filesz+i)=init[i];
  static void* dtv[4]; dtv[0]=(void*)1; dtv[1]=block;
  void**tcb=(void**)tp; tcb[0]=tp; tcb[1]=&dtv[0]; tcb[2]=tp; ((volatile int*)tp)[6]=0;
  __asm__ volatile("wrfsbase %0"::"r"((u64)tp));
}
#endif
extern "C" char **environ;
extern "C" int __libc_start_main(int(*m)(int,char**,char**),int c,char**v,void(*init)(void),void(*fini)(void),void(*rtld)(void),void*se){
  (void)fini;(void)rtld;(void)se;
  char** envp = v+c+1;
#ifdef DK_ENVIRON
  environ = envp;
#endif
#ifdef DK_IREL
  dkirel();
#endif
#ifdef DK_TLS
  dktls(c,v);
#endif
#ifdef DK_INIT
  if(init) init();
#endif
  m(c,v,envp);
  dkexit(0);
  return 0;
}
int plus(int a,int b){ return a+b; }

CompilationN/AN/ACompile OKScore: N/A

Testcase #12.98 us8 KBRuntime ErrorScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-09-24 05:48:10 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠