Tag: ANDROID-X86
Usé la función printf. Según sé, solo se pueden empujar variables/registros de tipo doubleword. Entonces, al principio convertí los bytes a doublewords, pero de alguna manera no funciona. bits 32 global start extern exit, printf import exit msvcrt.dll import printf msvcrt.dll segmento de datos use32 class=data D db ‘a’, ‘A’, . . . Read more
Estoy utilizando GCC 10.3.0 y tengo este código fuente: __asm__ volatile ( “movl %%gs:%0, %%eax\n\t” : “=a”(some_output) : “i”(immediate_value) ); Quiero que GCC traduzca esta instrucción a: movl %gs:immediate_value, %eax pero debido a que estoy utilizando la sintaxis AT&T y un valor inmediato, obtengo un “$” adicional: movl %gs:$immediate_value, %eax . . . Read more
Las CPUs dividen una instrucción en varios micro-ops, esto funciona para núcleos x86 y ARM y posiblemente para varias otras arquitecturas. Los micro-ops se pueden ejecutar sin orden específico y se almacenan en un ROB. Se finalizan en orden desde este ROB. ¿Cómo maneja una CPU las interrupciones asíncronas? Pienso . . . Read more
Actualmente estoy tratando de ingresar al modo largo, ya que ofrece más capacidades que el modo real de 16 bits. Hasta ahora, sin embargo, veo que para hacerlo tienes que configurar la paginación, lo cual es bastante confuso. ¿Existe alguna forma de entrar en el modo largo, mientras sigo utilizando . . . Read more
Considere el este ejemplo, en el que varias operaciones de redondeo (redondeo hacia arriba, redondeo hacia abajo, redondeo hacia cero y redondeo al más cercano con redondeo hacia el par más cercano) se pueden expresar con una sola instrucción roundsd: use_floor(double): roundsd xmm0, xmm0, 9 ret use_ceil(double): roundsd xmm0, xmm0, . . . Read more