按照这个说明,我设法只产生528字节的大小a.out(当gcc main.c最初给我8539字节的大文件时).
main.c是:
int main(int argc, char** argv) {
return 42;
}
Run Code Online (Sandbox Code Playgroud)
但我已经从这个汇编文件中构建了一个a.out:
电源:
; tiny.asm
BITS 64
GLOBAL _start
SECTION .text
_start:
mov eax, 1
mov ebx, 42
int 0x80
Run Code Online (Sandbox Code Playgroud)
有:
me@comp# nasm -f elf64 tiny.s
me@comp# gcc -Wall -s -nostartfiles -nostdlib tiny.o
me@comp# ./a.out ; echo $?
42
me@comp# wc -c a.out
528 a.out
Run Code Online (Sandbox Code Playgroud)
因为我需要机器码:
objdump -d a.out
a.out: file format elf64-x86-64
Disassembly of section .text:
00000000004000e0 <.text>:
4000e0: b8 01 00 00 00 mov $0x1,%eax …Run Code Online (Sandbox Code Playgroud) 有解决问题的网站,如topcoder.com,SPOJ.我想用类似的用例(人们发给我C++程序文件)来做一些限制.
其中之一是:
我该如何执行此类禁令?是否有更智能的方式(比如编译器标志? - 但我没有找到任何有用的东西)而不仅仅是在源代码中搜索短语?
我可以限制人们使用g ++或clang.事情正在Linux上完成.