x86和取消引用标签
我想将下面第二个值的地址加载到寄存器中 以下是我的Unix语法代码:x86和取消引用标签,x86,labels,memory-address,X86,Labels,Memory Address,我想将下面第二个值的地址加载到寄存器中 以下是我的Unix语法代码: .data Lz7: .long 24 .long 34 .long 80 .long 108 .long 101 .long 97 .long 115 .long 101 .long 32 .long 105 .long 110 ...etc... 我正在尝试使用以下代码: movl Lz7, %eax /* %g14
.data
Lz7:
.long 24
.long 34
.long 80
.long 108
.long 101
.long 97
.long 115
.long 101
.long 32
.long 105
.long 110
...etc...
我正在尝试使用以下代码:
movl Lz7, %eax /* %g14 */
movl $4, %ebx /* %g15 */
addl %ebx /* %g15 */ , %eax /* %g16 */
但gcc抱怨运行时出现总线错误。在GDB中,我可以看到GCC正在将标签
Lz7
转换为十六进制值0x2068,这似乎太小了。我也试过4(Lz7),但GCC抱怨。如何确定程序中总线错误的位置?如果此代码不正确,我应该写什么?您需要使用“leal”指令来获取有效地址,如下所示:
leal Lz7, %eax
addl $4, %eax