z/OS汇编调用BPX1WRT遇未解析符号链接错误求助
解决BPX1WRT符号未解析的链接错误
链接时必须显式指定UNIX System Services(USS)的系统库,修改链接命令为:
ld hw.o -o hw -L'//SYS1.SCEELKED'若使用IEWL直接链接,需在SYSLIB中包含
SYS1.SCEELKED静态库,或SYS1.SCEELKEX动态库。原因:BPX1WRT是USS提供的写操作服务入口,这类系统调用符号不在默认链接库中,必须手动指定包含USS服务的库文件。
可重入汇编代码示例(符合USS调用规范)
REENTRANT USING *,R12 SAVE (14,12) LR R12,R15 * 构建BPX1WRT参数列表 LA R1,BUFFER ; 指向输出缓冲区 LA R2,LENGTH ; 输出内容长度 LA R3,STDOUT_FD ; stdout对应的文件描述符(固定为1) CALL BPX1WRT,(R1,R2,R3),VL,MF=(E,PLIST) * 检查调用返回码 LTR R15,R15 BNZ ERROR_EXIT * 正常退出 LA R0,0 BR R14 ERROR_EXIT LA R0,1 BR R14 * 数据定义区 BUFFER DC C'Hello World' LENGTH DC F'11' STDOUT_FD DC F'1' PLIST DS 18F END
- 代码说明:
REENTRANT标记代码为可重入类型- 调用BPX1WRT时,参数依次为缓冲区地址、输出长度、文件描述符(stdout对应1)
- 通过R15寄存器判断服务调用是否成功,非0值表示执行异常
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

