下面是一个用 ppc 汇编写的 graph 作图小程序,但我不能理解,请大侠指点!
我自己加了一些标注,但不知道对错,想得到一个确认,还请大家多多帮忙!谢谢!
首先,命名了几个寄存器:
param1: reg r3 *命名几个寄存器用于参数传递
param2: reg r4
param3: reg r5
param4: reg r6
bss: reg r30 *给全局变量留着的
ppc_graph_dem
ENTRY * 表示程序开始
start_up *保存寄存器中的值,这句我不大清楚!??
la r3,qd(`bss) *把QD的地址值给然r3 addic r3,r3,206-4 * 这句对r3中的值进行位操作,我不大明白!??
Xcall InitGraf *调用系统函数InitGraf
Xcall InitFonts *同上但这些函数,要做什么呢?我还是不大明白?
Xcall InitWindows
Xcall InitMenus
Xcall TEInit
li `param1,0 *param1置0 这句疑惑很大,这是什么意思呢?param是做什么?
Xcall InitDialogs
Xcall InitCursor
bl graph_demo_init *跳转到另外一个函数
graph_demo_init:
mflr r29 *保存返回地址??这句很模糊,mflr这个指令,我不大理解!
bl open_window *又发生跳转了
mtlr r29 *这句不明白什么意思???
blr *回到主程序
open_window:
mflr r28 *??
li `param1,128 *windows的ID是128
li `param2,0 *param2 清零,不大明白? li `param3,-1 *? Xcall GetNewCWindow stw `param1,window_1_ptr(`bss) *把128保存到后面那个地址里??
**get the viewable rectangle (top,left,bottom,right)
la r3,16(r3) *这句什么意思?16(r3)是什么意思?
la r4,viewrect_1(`bss) *后面那个地址??
lfs f0,(r3) *这句什么意思?
stfs f0,(r4) *这句什么意思? stfs 这个指令什么意思?
lfs f1,4(r3) *??
stfs f1,4(r4) *??
**And copy to our second rectangle as well
la r4,viewrect_2(`bss)
stfs f0,(r4) *into viewrect_2
stfs f1,4(r4)
**set the port to our window
lwz `param1,window_1_ptr(`bss)
Xcall SetPort
lwz r10,white(rtoc) *r10指向white
mtlr r28 *这句是返回现在的地址吗? blr *and branch to it
****
global graph_demo_init
extern_data white
先写到这里了,有好些不明白的,我自己也再思考一下,希望那位大侠能出手相助!
[align=right][color=#000066][此贴子已经被作者于2006-1-18 14:32:28编辑过][/color][/align]