AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-17814969

SCP-1762's questions

Martin Hope
SCP-1762
Asked: 2024-02-24 21:12:18 +0800 CST

Não é possível indexar matrizes em assembly

  • 5

Eu tenho tentado aprender um pouco de montagem e estava testando arrays e descobri que quando tentei imprimir o valor no ponto indexado nada aconteceu, depois de experimentar mais parece que mesmo que eu esteja usando os arrays como mostrado em muitos exemplos na Internet, simplesmente não está funcionando

Aqui está o código:

section .text
    global _start

_start:
    mov eax, num ; eax now contains 5
    mov ebx, [array+8] ; ebx now contains 8
    cmp eax, ebx ; compares eax to ebx
    jge skip ; should not happen because eax is smaller than ebx
    call printdigit
skip:
    call printn
    call _exit

printdigit:
    mov eax, 0x30
    add [num], eax
    mov ecx, num
    mov edx, 1 ;length
    mov ebx, 1 ;write to stdout
    mov eax, 4 ;write call number
    int 0x80
    ret

printn:
    mov eax, 0x0A
    push eax
    mov eax, 4
    mov ebx, 1
    mov ecx, esp
    mov edx, 1
    int 0x80
    add esp, 4
    ret

_exit:
    mov eax, 1
    mov ebx, 0
    int 0x80


section .data
    num dw 5
    array dw 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Os comandos que estou usando para compilar o código

nasm -f elf Bubblesort.asm
ld -m elf_i386 -s -o Bubblesort Bubblesort.o
./Bubblesort

O que estou executando:

ubuntu 22.04.3 desktop amd64, (na máquina virtual, mas não deveria importar, eu acho)

A saída que eu quero deve ser

5

A saída real


Quero que printdigit seja chamado apenas quando num for menor do que o que está indexado no array

Tenho quase certeza de que não é um problema de computador, mas de código, mas não tenho certeza de onde

Agora fiz as seguintes alterações

_start:
   mov eax, [num]
   mov ebx, [array+8]
   cmp eax, ebx
   jae skip
section .data
    num dd 5
    array dd 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

o resto do código é normal

isso agora imprime o valor que desejo quando o array é indexado para um valor maior que num, mas quando não é maior, ainda imprime o valor

assembly
  • 1 respostas
  • 77 Views
Martin Hope
SCP-1762
Asked: 2024-01-18 19:51:27 +0800 CST

Erro desconhecido no mariadb com procedimento armazenado

  • 5

Estou criando um site para praticar e precisei fazer um banco de dados SQL para armazenar os usuários e seus privilégios. Eu queria fazer um procedimento armazenado para recuperar os privilégios do usuário selecionado, mas por algum motivo diz que tenho um erro de sintaxe, mas estou muito confuso sobre o que é. Isso tudo está no phpmyadmin hospedado no xampp, e infelizmente eu estou muito desacostumado com sql e já tentei pesquisar em todos os lugares com o erro

código do procedimento:

CREATE PROCEDURE CHECKUSERPRIVILEGES(
    IN username VARCHAR(32),
    IN pass VARCHAR(32)
)
BEGIN
    DECLARE
        userid INT(11); <-- error here
    SELECT
        UserID
    INTO userid
FROM
    users
WHERE
    Username = username AND Pass = pass; DECLARE priviligeid BIGINT(16);
SELECT
    PrivilegeID
INTO privilegeid
FROM
    userprivleges
WHERE
    UserID = userid;
SELECT
    *
FROM PRIVILEGES
WHERE
    PrivilegeID = privilegeid
GO;

erro:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 7

Eu também tentei mudar INT(11)para apenas INTou INTEGERmas ainda o mesmo erro

Encontrei um erro semelhante aqui , mas não entendo o que a resposta está fazendo e como aplicá-la ao meu problema

Editar: tentei mover o DECLAREs para o início e ainda o mesmo erro

CREATE PROCEDURE CHECKUSERPRIVILEGES(
    IN username VARCHAR(32),
    IN pass VARCHAR(32)
)
BEGIN
    DECLARE
        userid INT(11);
    DECLARE
        priviligeid BIGINT(16);
    SELECT
        UserID
    INTO userid
FROM
    users
WHERE
    Username = username AND Pass = pass;
SELECT
    PrivilegeID
INTO privilegeid
FROM
    userprivleges
WHERE
    UserID = userid;
SELECT
    *
FROM PRIVILEGES
WHERE
    PrivilegeID = privilegeid
GO;
mariadb
  • 1 respostas
  • 48 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve