在.bss段中用大缓冲区编写简单程序
$(window).resize(function(){
ChartFunctionName();
});
然后尝试增加一些数组单元格的值。
function TekenBasisschoolUitstroom()
{
var data = new google.visualization.arrayToDataTable([
['School', 'Speciaal-praktijk-kader', 'VMBO-kader', 'VMBO-T-voorheen MAVO', 'VMBO-T/HAVO', 'HAVO', 'HAVO/VWO',
'VWO'],
['De Ster', 1, 0, 0, 0, 3, 0, 1], ['OBS Driespan', 8, 3, 13, 1, 27, 0, 20] ]);
var schoolUitstroomOpties = {
'title':'Uitstroom basisscholen #schooljaar 2014-2015 @Harkstede',
isStacked: 'percent',
legend: {position: 'right', maxLines: 3},
vAxis: {
minValue: 0,
ticks: [0, .2, .4, .6, .8, 1]
},
'chartArea': {left:40,'width': '80%', 'height': '80%'},
animation:{
startup: true,
duration: 2000,
easing: 'out', },
};
var schoolUitstroomChart = new google.visualization.ColumnChart(document.getElementById('uitstroom_basisschool'));
google.visualization.events.addOneTimeListener(schoolUitstroomChart, 'ready', selectHandler);
var aantalScholen = data.getNumberOfRows()
function selectHandler() {
console.log ('schoolUitstroomChart is ready en er zijn ' + (aantalScholen) + ' scholen');
}
schoolUitstroomChart.draw(data, schoolUitstroomOpties);
$(window).resize(function(){
TekenBasisschoolUitstroom();
});
}
仍然在gdb中,在第三条指令执行之前和之后都看到相同的值(0)。
h_vals:
resq 99999
为什么当我尝试检查存储的地址时,我仍然看到0?
答案 0 :(得分:2)
mov
显然会移动数据;如果失败,你的程序会出现段错误。
没有调试信息的符号的默认大小是4个字节。您可以使用ptype h_vals
来检查gdb对它的看法。
请记住,即使您正在调试asm,gdb的语法也会像C一样工作。在C中,通过那么多元素向指针偏移添加一些内容,而不是那么多字节。
&h_vals &h_vals + 8 * $rax
未在gdb中评估您期望的地址。 (另外,我认为&h_vals &h_vals
是一个错字,并不是你实际运行的。)
由于gdb认为&h_vals
是int*
,&h_vals + offset
会产生4 *偏移的字节偏移,就像C中的h_vals[offset]
一样。所以你的地址是gdb中的x
amining实际上是[h_vals + 8 * 4 * rax]
。
另一种检查方式:p /x &h_vals
和p /x $rax
。您可以自己计算出数学,并与x/
输出中的地址进行比较。
此处最安全的解决方案是投放到char*
:
x /dg 8 * $rax + (char*)&h_vals
或者:在.c
中定义符号,以便编译器为它们生成调试信息(因为您不想手动执行)。
e.g。将unsigned long h_vals[99999];
放入使用gcc -c -g vars.c
编译的.c中,并将生成的.o与.as YASM创建的.asm链接。