1

我的解决方案中有以下.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 自动格式化,希望它只是缩进中间行。Insead,它产生了以下内容:

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

谁能?向我解释这些数字(和 )?他们的意思是什么?这是如何自动格式化的?

4

1 回答 1

2

散列后的数字是汇编行的字节大小(就像指令由汇编器汇编时一样)。表示?无法计算大小(在这种情况下,您在 上缺少大小说明符[esp+28h],因此汇编器无法判断它是字节、字、双字还是 qword)。

于 2013-08-25T19:04:28.030 回答