modified test and more proto
This commit is contained in:
parent
6136207436
commit
d1343ff90c
3 changed files with 28 additions and 21 deletions
|
|
@ -1 +1 @@
|
||||||
clang++ -DDEBUG src\proto\proto.cpp -o build\ayo.exe -Wall -Wextra -Wpedantic -std=c++11 -g -gcodeview -Wl,-pdb= -L C:\capybara\libclang\x86_64-w64-mingw32\bin -l c++ -l unwind -static --verbose
|
clang++ -DDEBUG src\proto\proto.cpp -o build\ayo.exe -Wall -Wextra -Wpedantic -std=c++11 -g -gcodeview -Wl,-pdb= -L C:\capybara\libclang\x86_64-w64-mingw32\bin -static-libstdc++ -static --verbose
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,3 @@
|
||||||
<<<<<<< Updated upstream
|
|
||||||
=======
|
|
||||||
//si, bueno, testx
|
|
||||||
>>>>>>> Stashed changes
|
|
||||||
/*
|
/*
|
||||||
* THREADIN THE LINUS: https://linux.die.net/man/2/sched_setaffinity
|
* THREADIN THE LINUS: https://linux.die.net/man/2/sched_setaffinity
|
||||||
*/
|
*/
|
||||||
|
|
@ -29,7 +25,7 @@ Intel(R) 64 and IA-32 Architectures Software Developer's Manual Volume 3 (3A, 3B
|
||||||
|
|
||||||
//TSC is incremented by the base multiplier once every reference clock, so on my Xeon E5-2680 (Sandy Bridge EP) this is an increment of 27 every 10 ns
|
//TSC is incremented by the base multiplier once every reference clock, so on my Xeon E5-2680 (Sandy Bridge EP) this is an increment of 27 every 10 ns
|
||||||
|
|
||||||
|
//https://github.com/jdmccalpin/low-overhead-timers/issues/1
|
||||||
|
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
//#include <Windows.h>
|
//#include <Windows.h>
|
||||||
|
|
@ -45,7 +41,7 @@ Intel(R) 64 and IA-32 Architectures Software Developer's Manual Volume 3 (3A, 3B
|
||||||
#include <stringapiset.h>
|
#include <stringapiset.h>
|
||||||
#include <synchapi.h>
|
#include <synchapi.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef NOMESELDELINUS
|
#ifdef LOwOnus
|
||||||
//hilitos y tal
|
//hilitos y tal
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -53,6 +49,17 @@ Intel(R) 64 and IA-32 Architectures Software Developer's Manual Volume 3 (3A, 3B
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "../debug.h"
|
#include "../debug.h"
|
||||||
|
|
||||||
|
uint64_t checksatr(){ //Generic
|
||||||
|
uint64_t rcx;
|
||||||
|
asm volatile (".intel_syntax noprefix\t\n" \
|
||||||
|
"mov eax, 0x80000007\t\n" \
|
||||||
|
// 080000007h\t\n"
|
||||||
|
"cpuid\t\n" : "=c" (rcx) );
|
||||||
|
//bool iTSC = rcx & (1<<6);
|
||||||
|
//"and edx, 10000000\n")
|
||||||
|
return rcx;
|
||||||
|
}
|
||||||
|
|
||||||
bool checkInvariantTSC(){ //Generic
|
bool checkInvariantTSC(){ //Generic
|
||||||
uint64_t rdx;
|
uint64_t rdx;
|
||||||
asm volatile (".intel_syntax noprefix\t\n" \
|
asm volatile (".intel_syntax noprefix\t\n" \
|
||||||
|
|
@ -96,10 +103,11 @@ EDX Bits 31-00: Reserved = 0.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char* AMDMeCagoEnTusPutosMuertos () {
|
char* AMDTest() {
|
||||||
/*
|
/*
|
||||||
* Extended name on AMD systems when using 8000_002-4. 8000_0000 for Extpagequant/vendor. Hijos de puta.
|
* Extended name on AMD systems when using 8000_002-4. 8000_0000 for Extpagequant/vendor. Hijos de puta.
|
||||||
* Now parsing 0H for standard brand name
|
* Now parsing 0H for standard brand name
|
||||||
|
* https://github.com/jdmccalpin/low-overhead-timers/issues/1
|
||||||
*/
|
*/
|
||||||
char* palabritas = (char*)malloc(sizeof(char) * 13);
|
char* palabritas = (char*)malloc(sizeof(char) * 13);
|
||||||
uint8_t siguienteLetra = 0;
|
uint8_t siguienteLetra = 0;
|
||||||
|
|
@ -119,8 +127,8 @@ char* AMDMeCagoEnTusPutosMuertos () {
|
||||||
return palabritas;
|
return palabritas;
|
||||||
}
|
}
|
||||||
|
|
||||||
//GMET on??????????? jfc wtf
|
//GMET on??????????? Zenbros...
|
||||||
bool AMDJoderMET(){
|
bool AMDGMET(){
|
||||||
uint64_t rdx;
|
uint64_t rdx;
|
||||||
asm volatile ( ".intel_syntax noprefix\t\n" \
|
asm volatile ( ".intel_syntax noprefix\t\n" \
|
||||||
"mov eax, 0x8000000A\t\n" \
|
"mov eax, 0x8000000A\t\n" \
|
||||||
|
|
@ -248,7 +256,7 @@ uint64_t estimandoFreq(){
|
||||||
valLen = MAX_VALUE_NAME;
|
valLen = MAX_VALUE_NAME;
|
||||||
//data NULL + len NON_NULL to get dataBufLen;
|
//data NULL + len NON_NULL to get dataBufLen;
|
||||||
//data allocated (NON-NULL) + len NON-NULL with previous value for dataLen
|
//data allocated (NON-NULL) + len NON-NULL with previous value for dataLen
|
||||||
//JFC MS WHY. that why we defaultin to biggis. cos not worky. ewe
|
//MS WHY. that why we defaultin to biggis. cos not worky. ewe
|
||||||
dataLen = sizeof(REG_QWORD) * (longestDataSize);
|
dataLen = sizeof(REG_QWORD) * (longestDataSize);
|
||||||
status = RegEnumValueW(key,
|
status = RegEnumValueW(key,
|
||||||
i,
|
i,
|
||||||
|
|
@ -278,9 +286,7 @@ uint64_t estimandoFreq(){
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
//dataLen = dataLen * 2lu;
|
//dataLen = dataLen * 2lu;
|
||||||
/* BROS YO ES QUE ME VOY A CAGAR EN SUS PUTOS MUERTOS
|
/* We do be usin' well designed APIs......
|
||||||
* ASí QUE PIDES DOS VECES, UNA TAMAńO, OTRA A TOPE PRESISO, EH
|
|
||||||
* PUTA BASURA DE API
|
|
||||||
* status = RegEnumValueW(key,
|
* status = RegEnumValueW(key,
|
||||||
* i,
|
* i,
|
||||||
* valName,
|
* valName,
|
||||||
|
|
@ -312,14 +318,15 @@ uint64_t estimandoFreq(){
|
||||||
|
|
||||||
int main(int argc, char** argv){
|
int main(int argc, char** argv){
|
||||||
//AMD Momento
|
//AMD Momento
|
||||||
char* opiniones = AMDMeCagoEnTusPutosMuertos();
|
char* opiniones = AMDTest();
|
||||||
bool w11 = AMDJoderMET();
|
bool w11 = AMDGMET();
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
uint64_t isItActually32GHz = estimandoFreq();
|
uint64_t isItActually32GHz = estimandoFreq();
|
||||||
log_debugcpp("ayo we found " << isItActually32GHz << " flash knuckle");
|
log_debugcpp("ayo we found " << isItActually32GHz << " flash knuckle");
|
||||||
}
|
}
|
||||||
int64_t juas = getFreqFromReg();
|
int64_t juas = getFreqFromReg();
|
||||||
log_debugcpp("JODER " << juas);
|
log_debugcpp("satr " << checksatr());
|
||||||
|
log_debugcpp("Invariant " << checkInvariantTSC());
|
||||||
//iwintewel
|
//iwintewel
|
||||||
|
|
||||||
//Cordura
|
//Cordura
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ int main(int argc, char** argv){
|
||||||
if(timer == nullptr)
|
if(timer == nullptr)
|
||||||
return -2;
|
return -2;
|
||||||
uint64_t wfr = getQPCFrequency();
|
uint64_t wfr = getQPCFrequency();
|
||||||
int64_t fr = timer->getBaseFrequency();
|
int64_t fr = 3193999000;//timer->getBaseFrequency();
|
||||||
|
|
||||||
|
|
||||||
uint64_t wt1 = getQPCTicks();
|
uint64_t wt1 = getQPCTicks();
|
||||||
|
|
@ -66,9 +66,9 @@ int main(int argc, char** argv){
|
||||||
//uint64_t fr = timer->getBaseFrequency();
|
//uint64_t fr = timer->getBaseFrequency();
|
||||||
uint64_t wt2 = getQPCTicks();
|
uint64_t wt2 = getQPCTicks();
|
||||||
std::cout << "Sleep: " << sleep << "s\n-----------------\nTest 1: TSCTimer within QPC\n" << std::endl;
|
std::cout << "Sleep: " << sleep << "s\n-----------------\nTest 1: TSCTimer within QPC\n" << std::endl;
|
||||||
std::cout << " QPC Momento: \nt1: " << wt1 << " t2: " << wt2 << " fr: " << wfr << std::endl;
|
std::cout << "QPC Momento: \n t1: " << wt1 << " t2: " << wt2 << " fr: " << wfr << std::endl;
|
||||||
std::cout << " restita: " << wt2-wt1 << std::endl;
|
std::cout << " restita: " << wt2-wt1 << std::endl;
|
||||||
std::cout << " TSCTimer Momento: \nt1: " << t1 << " t2: " << t2 << " fr: " << fr << std::endl;
|
std::cout << "TSCTimer Momento: \n t1: " << t1 << " t2: " << t2 << " fr: " << fr << std::endl;
|
||||||
std::cout << " restita: " << t2-t1 << std::endl;
|
std::cout << " restita: " << t2-t1 << std::endl;
|
||||||
std::cout << " checks: " << checks << "\n-----------------\nTest 2: QPC within TSCTimer\n"<< std::endl;
|
std::cout << " checks: " << checks << "\n-----------------\nTest 2: QPC within TSCTimer\n"<< std::endl;
|
||||||
|
|
||||||
|
|
@ -83,7 +83,7 @@ int main(int argc, char** argv){
|
||||||
//uint64_t fr = timer->getBaseFrequency();
|
//uint64_t fr = timer->getBaseFrequency();
|
||||||
t2 = timer->getTimeStamp();
|
t2 = timer->getTimeStamp();
|
||||||
std::cout << "QPC Momento: \n t1: " << wt1 << " t2: " << wt2 << " fr: " << wfr << std::endl;
|
std::cout << "QPC Momento: \n t1: " << wt1 << " t2: " << wt2 << " fr: " << wfr << std::endl;
|
||||||
std::cout << "restita: " << wt2-wt1 << std::endl;
|
std::cout << " restita: " << wt2-wt1 << std::endl;
|
||||||
std::cout << "TSCTimer Momento: \n t1: " << t1 << " t2: " << t2 << " fr: " << fr << std::endl;
|
std::cout << "TSCTimer Momento: \n t1: " << t1 << " t2: " << t2 << " fr: " << fr << std::endl;
|
||||||
std::cout << " restita: " << t2-t1 << std::endl;
|
std::cout << " restita: " << t2-t1 << std::endl;
|
||||||
std::cout << " checks: " << checks << std::endl;
|
std::cout << " checks: " << checks << std::endl;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue