diff options
Diffstat (limited to 'md/writeup')
| -rw-r--r-- | md/writeup/gcc_inline_assembly.md | 27 | 
1 files changed, 27 insertions, 0 deletions
diff --git a/md/writeup/gcc_inline_assembly.md b/md/writeup/gcc_inline_assembly.md index 6e9985a..eda7764 100644 --- a/md/writeup/gcc_inline_assembly.md +++ b/md/writeup/gcc_inline_assembly.md @@ -155,6 +155,25 @@ long sys_mmap(unsigned long addr, unsigned long len, unsigned long prot, unsigne  ```  Put result of execution to __ret__, all paramters in memory +### Intel random number with RDRAND + +``` +uint64_t get_hw_rand() +{ +	uint64_t ret; +	int i=0; +	const int timeout = 10; +	while (i<timeout) +	{ +		asm("rdrand %0\n\t" +			:"=a"(ret)::); +		if (ret) break; +		i++; +	} +	return ret; +} +``` +  <!--  ### Intel i386 BSD @@ -166,6 +185,14 @@ Put result of execution to __ret__, all paramters in memory  ## Switching on of intel/att syntax +Inline assembler for GCC by default uses AT&T syntax. There is possible to turn on/off intel syntax. + +``` +asm(".intel_syntax noprefix"); +asm("mov eax, 1"); +asm(".att_syntax prefix"); +``` +  ## Asm goto  | 
