Yürümek Senin Görevin – The Daily WTF

In: Genel


Gömülü çip belgeleri bazen çok kötü ve çok kafa karıştırıcı. Belirli bir çipin içini ve dışını sadece deneyim kazanmadan gerçekten anlamak genellikle zordur.

Bu yüzden Bay Scrith kesinlikle daha iyi bilmesi gereken birinden gelen bu kodla biraz şaşırdım.

Bu kod “yürüyen 1’ler” hafıza testi içindir – sadece hafızadaki her adresi ziyaret eder ve bir “1” yazar ve bu “1”i geri okuyabildiğini onaylar. Böyle bir test ilginç bir zorluk teşkil eder: Herhangi bir değişken kullanamazsınız, çünkü bunlar RAM’de bir yerde yaşayacaklardır, bu nedenle kendinizi yalnızca CPU’nuzun gösterdiği kayıtlarla sınırlamanız gerekir.

Ve bu geliştiricinin tuhaf seçimini yaptığı yer burası. Bu özel CPU’nun çok sayıda genel amaçlı kaydı ve kontrol için bir dizi kayıt gibi bir grup özel amaçlı kaydı vardı. PWM jeneratörler. Geliştirici ya genel amaçlı kayıtlara erişmenin doğru yolunu bulamadı ya da denemeyi umursamadı, ancak her iki durumda da sonuçta PWM kayıtlarını kullandıkları oldu. her şey:

PWMDTY01 = RAM_BASE; PWMDTY23 = START_VALUE; PWMDTY4 = 30; PWMDTY5 = 0; for ( PWMDTY5 = 0; PWMDTY5 < 2; PWMDTY5 ++ ) { for (PWMDTY01 = RAM_BASE; PWMDTY01 < RAM_END; PWMDTY01 += sizeof(uint16_t) ) { *((uint16_t*)PWMDTY01) = PWMDTY23; PWMDTY23 <<= 1; if ( PWMDTY23 == 0 ) { PWMDTY23 = START_VALUE; } } for ( PWMDTY4 = 0; PWMDTY4 < 16; PWMDTY4 ++ ) { PWMDTY23 = _PowOfTwo_16[PWMDTY4]; for (PWMDTY01 = RAM_BASE; PWMDTY01 < RAM_END; PWMDTY01 += sizeof(uint16_t) ) { if ( *((uint16_t*)PWMDTY01) != PWMDTY23 ) { PWMDTY4 = 30; PWMDTY01 = RAM_END; } PWMDTY23 <<= 1; if ( PWMDTY23 == 0 ) PWMDTY23 = START_VALUE; *((uint16_t*)PWMDTY01) = PWMDTY23; } } if ( PWMDTY4 <= 16 ) { for (PWMDTY01 = RAM_BASE; PWMDTY01 < RAM_END; PWMDTY01 += sizeof(uint16_t) ) { *((uint16_t*)PWMDTY01) = 0; PWMDTY5 = 2; } } } if ( PWMDTY4 > 16 ) { ramTestPassed = FALSE; } else { ramTestPassed = TRUE; }

kod İşler, ama kesinlikle garip bir seçim. Bay Scrith bunu önerdiğinde PWMDTY23 En net kayıt seçimi değildi, geliştirici, “Ah, yapmalı mıyım? #define bir makro daha net bir şekilde adlandırılamaz mı?”

[Advertisement]

Konfigürasyon değişiklikleri için sunucularınızı sürekli olarak izleyin ve konfigürasyon kayması olduğunda raporlayın. Otter’ı kullanmaya başlayın bugün!

Bir cevap yazın

Ready to Grow Your Business?

We Serve our Clients’ Best Interests with the Best Marketing Solutions. Find out More

How Can We Help You?

Need to bounce off ideas for an upcoming project or digital campaign? Looking to transform your business with the implementation of full potential digital marketing?

For any career inquiries, please visit our careers page here.
[contact-form-7 404 "Bulunamadı"]