我的解决方案中有以下.asm
文件:
doTimerAsm PROC EXPORT
pushfd ; backup flags register (4 Bytes)
pushad ; bakcup general purpose registers (8*4 Bytes)
mov eax, [esp+24h] ; load interrupt handler pointer
push [esp+28h] ; push handler parameter
call eax ; invoke interrupt handler
popad ; after return from interrupt handler, restore general purpose registers
popfd ; restore flags register
add esp, 08h ; pop interrupt handler pointer and the parameter
ret ; resume
doTimerAsm ENDP
我在它上面运行VS自动格式,希望它只是缩进中间行。欧洲工商管理学院,它产生了以下内容:
doTimerAsm PROC EXPORT
pushfd ;#1 backup flags register (4 Bytes)
pushad ;#1 bakcup general purpose registers (8*4 Bytes)
mov eax, [esp+24h] ;#4 load interrupt handler pointer
push [esp+28h] ;#? push handler parameter
call eax ;#2 invoke interrupt handler
popad ;#1 after return from interrupt handler, restore general purpose registers
popfd ;#1 restore flags register
add esp, 08h ;#3 pop interrupt handler pointer and the parameter
ret ;#1 resume
doTimerAsm ENDP
任何人都可以向我解释这些数字(以及?
)吗?他们的意思是什么?这是如何自动格式化的?
答案 0 :(得分:2)
散列后的数字是汇编行的字节大小(如果指令是由汇编程序汇编的话)。 ?
表示无法计算大小(在这种情况下,您在[esp+28h]
上缺少大小说明符,因此汇编程序无法判断它是字节,单词,双字还是qword)。 / p>