clc.c

来自「The Valgrind distribution has multiple t」· C语言 代码 · 共 62 行

C
62
字号
#include <stdio.h>typedef unsigned long long int ULong;ULong do_clc ( void ){  ULong res;  __asm__ __volatile__(     "pushq $0x8d5\n\t" /* OSZACP */     "popfq\n\t"     "clc\n\t"     "pushfq\n\t"     "popq %0"     : "=r"(res)     :     : "memory", "cc"     );  return res;}ULong do_stc ( void ){  ULong res;  __asm__ __volatile__(     "pushq $0x0\n\t"     "popfq\n\t"     "stc\n\t"     "pushfq\n\t"     "popq %0"     : "=r"(res)     :     : "memory", "cc"     );  return res;}ULong do_cmc ( void ){  ULong res;  __asm__ __volatile__(     "pushq $0x0\n\t"     "popfq\n\t"     "stc\n\t"     "cmc\n\t"     "pushfq\n\t"     "popq %0"     : "=r"(res)     :     : "memory", "cc"     );  return res;}int main ( void ){  printf("clc: 0x%016llx\n", 0x8d5 & do_clc());  printf("stc: 0x%016llx\n", 0x8d5 & do_stc());  printf("cmc: 0x%016llx\n", 0x8d5 & do_cmc());  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?