Eсть вот такой вопрос.
Вот часть кода:
const X64_getters = {
RAX :function() { var n = this[0]; n.WIDTH = 64; return n; },
EAX :function() { var n = this[0]; n = (n & 0xFFFFFFFFn) | (this.SIGNED && (n & 0x80000000n) ? 0xFFFFFFFF00000000n : 0n); n.WIDTH = 32; return n; },
AX :function() { var n = this[0]; n = (n & 0xFFFFn) | (this.SIGNED && (n & 0x8000n) ? 0xFFFFFFFFFFFF0000n : 0n); n.WIDTH = 16; return n; },
AL :function() { var n = this[0]; n = (n & 0xFFn) | (this.SIGNED && (n & 0x80n) ? 0xFFFFFFFFFFFFFF00n : 0n); n.WIDTH = 8; return n; },
AH :function() { var n = this[0] >> 8n; n = (n & 0xFFn) | (this.SIGNED && (n & 0x80n) ? 0xFFFFFFFFFFFFFF00n : 0n); n.WIDTH = 8; return n; },
SIGNED :function() { this.SIGNED = true; return this; }
};
for(var fn in X64_getters)
BigUint64Array.prototype.__defineGetter__(fn, X64_getters[fn]);
Почему здесь попутный флаг SIGNED работает и передаётся внутрь функции, а вот ответное свойство WIDTH никак дальше не передаётся?
Сейчас WIDTH мне необходимо как-то ввести для всё тех же операций с регистрами, так как необходимо знать ширину по имени регистра (сейчас это работает через имя регистра в строке с проверкой через switch-case, что не очень хорошо!)