私のコード
const int howmany = 5046;
char buffer[howmany];
asm("lea buffer,%esi"); //Get the address of buffer
asm("mov howmany,%ebx"); //Set the loop number
asm("buf_loop:"); //Lable for beginning of loop
asm("movb (%esi),%al"); //Copy buffer[x] to al
asm("inc %esi"); //Increment buffer address
asm("dec %ebx"); //Decrement loop count
asm("jnz buf_loop"); //jump to buf_loop if(ebx>0)
私の問題
gccコンパイラを使用しています。何らかの理由で、私のバッファ/howmany変数は私のasmの目には定義されていません。理由はわかりません。バッファ配列の開始アドレスをesiレジスタに移動し、各要素をalレジスタにコピーしながら「何回」ループさせたいだけです。